在 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_namesalary 作为 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"