简体   繁体   English

如何在 Cube.js 过滤器查询中添加 OR 条件

[英]How to add OR condition in Cube.js filter query

I'm want to add OR condition in the JSON query of Cube.js.我想在 Cube.js 的 JSON 查询中添加OR条件。 But once I added one more condition in the filter it always adds AND condition in SQL query.但是一旦我在过滤器中添加了一个条件,它总是在 SQL 查询中添加AND条件。

Below is the JSON query that I'm trying.下面是我正在尝试的 JSON 查询。

{
  "dimensions": [
    "Employee.name",
    "Employee.company"
  ],
  "timeDimensions": [],
  "measures": [],
  "filters": [
    {
      "dimension": "Employee.company",
      "operator": "contains",
      "values": [
        "soft"
      ]
    },
    {
      "dimension": "Employee.name",
      "operator": "contains",
      "values": [
        "soft"
      ]
    }
  ]
}

It generates below SQL query.它在下面生成 SQL 查询。

SELECT
  `employee`.name `employee__name`,
  `employee`.company `employee__company`
FROM
  DEMO.Employee AS `employee`
WHERE
  `employee`.company LIKE CONCAT('%', 'soft', '%') 
             AND 
  `employee`.name LIKE CONCAT('%', 'soft', '%')
GROUP BY
  1,
  2;

What is the JSON query for Cube.js if I want to generate below SQL如果我想在 SQL 下面生成 Cube.js 的 JSON 查询是什么

SELECT
  `employee`.name `employee__name`,
  `employee`.company `employee__company`
FROM
  DEMO.Employee AS `employee`
WHERE
  `employee`.company LIKE CONCAT('%', 'soft', '%') 
             OR
  `employee`.name LIKE CONCAT('%', 'soft', '%')
GROUP BY
  1,
  2;

API support for logical operators isn't shipped yet. API 对逻辑运算符的支持尚未发布。 Meanwhile there're several workarounds:同时有几种解决方法:

  1. Define dimension that mimics OR behavior.定义模仿OR行为的维度。 In your case it's在你的情况下
cube(`Employee`, {
 // ...

 dimensions: {
   companyAndName: {
     sql: `CONCAT(${company}, ' ', ${name})`,
     type: `string`
   }
 }
});
  1. Define segments.定义细分。 Those can be also generated: https://cube.dev/docs/schema-generation这些也可以生成: https://cube.dev/docs/schema-generation
cube(`Employee`, {
  // ...

  segments: {
    soft: {
      sql: `${company} LIKE CONCAT('%', 'soft', '%') OR ${name} LIKE CONCAT('%', 'soft', '%')` 
    }
  }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM