在 Sisense 中用否定过滤枢轴 table
Filtering pivot table in Sisense with negation
我想在 Sisense 中实现一个简单的过滤器,但我想不通。
我的数据存储在 PostgresQL 数据库中。一个最小的例子看起来像这样:
CREATE TABLE fact_table (
first_name text,
salary integer
);
INSERT INTO fact_table VALUES ('John', 100), ('Jack', 200), ('Mary', 300), ('Klaus', 400);
CREATE TABLE dim_table (
first_name text,
last_name text
);
INSERT INTO dim_table VALUES ('John', 'Smith'), ('Jack', 'Smith'), ('John', 'Jackson'), ('Mary', 'Smith'), ('Klaus', 'Jackson');
我想创建一个枢轴 table,行中的 first_name
和 salary
作为 Sisense 中的值。
现在我要过滤的场景有两种:
1) Select 所有 first_name
存在姓 'Smith' 的人
=> 在 Sisense 中很简单,只需在 first_name
<-> first_name
上创建关系并在 'Smith'
上进行过滤
我们的结果集是{Jack, John, Mary}和他们各自的薪水。
2) Select 全部 first_name
,姓 'Smith' 的人不共享。这是 1) 的否定。
我们的预期结果集 {Klaus}.
我不知道该怎么做。在 SQL 中很简单:
SELECT * FROM fact_table WHERE first_name NOT IN (SELECT first_name FROM dim_table WHERE last_name = 'Smith');
我在 Sisense 中没有找到任何 suitable 选项。如果我创建一个列表过滤器并取消选择 Smith,我会从我的 dim_table 中获取所有非 Smiths,这在逻辑上是不一样的(returns John 而不是 Klaus)。
我一定是遗漏了一些明显的东西。有什么想法吗?
非常感谢!
我认为您的过滤器的第一种和第二种情况都可以通过elasticube 中的自定义SQL 来实现。您需要对两个表进行左连接并从事实中获取每一行。在 first_name 的过滤器中,您可以将 select first_name 取消为 "Smith" 但 select NULL 值显示 "Klaus"
我想在 Sisense 中实现一个简单的过滤器,但我想不通。
我的数据存储在 PostgresQL 数据库中。一个最小的例子看起来像这样:
CREATE TABLE fact_table (
first_name text,
salary integer
);
INSERT INTO fact_table VALUES ('John', 100), ('Jack', 200), ('Mary', 300), ('Klaus', 400);
CREATE TABLE dim_table (
first_name text,
last_name text
);
INSERT INTO dim_table VALUES ('John', 'Smith'), ('Jack', 'Smith'), ('John', 'Jackson'), ('Mary', 'Smith'), ('Klaus', 'Jackson');
我想创建一个枢轴 table,行中的 first_name
和 salary
作为 Sisense 中的值。
现在我要过滤的场景有两种:
1) Select 所有 first_name
存在姓 'Smith' 的人
=> 在 Sisense 中很简单,只需在 first_name
<-> first_name
上创建关系并在 'Smith'
我们的结果集是{Jack, John, Mary}和他们各自的薪水。
2) Select 全部 first_name
,姓 'Smith' 的人不共享。这是 1) 的否定。
我们的预期结果集 {Klaus}.
我不知道该怎么做。在 SQL 中很简单:
SELECT * FROM fact_table WHERE first_name NOT IN (SELECT first_name FROM dim_table WHERE last_name = 'Smith');
我在 Sisense 中没有找到任何 suitable 选项。如果我创建一个列表过滤器并取消选择 Smith,我会从我的 dim_table 中获取所有非 Smiths,这在逻辑上是不一样的(returns John 而不是 Klaus)。
我一定是遗漏了一些明显的东西。有什么想法吗?
非常感谢!
我认为您的过滤器的第一种和第二种情况都可以通过elasticube 中的自定义SQL 来实现。您需要对两个表进行左连接并从事实中获取每一行。在 first_name 的过滤器中,您可以将 select first_name 取消为 "Smith" 但 select NULL 值显示 "Klaus"