0

我正在尝试在 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');

我想在行中创建一个数据透视表,first_name并将其salary作为 Sisense 中的值。

现在有两种情况我要过滤:

1) 选择所有first_name存在姓氏“Smith”的人

first_name=> 在 Sisense 中很容易,只需在<->上创建关系first_name并过滤“Smith”

我们的结果集是 {Jack, John, Mary} 和他们各自的薪水。

2) 选择所有first_name不被姓“Smith”的人共享的s。这是1)的否定。我们的预期结果集 {Klaus}。

我不知道该怎么做。这在 SQL 中很简单: SELECT * FROM fact_table WHERE first_name NOT IN (SELECT first_name FROM dim_table WHERE last_name = 'Smith');

我在 Sisense 中没有找到任何合适的选项。如果我创建一个列表过滤器并取消选择 Smith,我会从我的 dim_table 中获取所有非 Smith,这在逻辑上是不一样的(并返回 John 而不是 Klaus)。

我一定遗漏了一些明显的东西。有任何想法吗?

非常感谢!

4

1 回答 1

1

我认为您的过滤器的第一个和第二个场景都可以通过弹性管中的自定义 SQL 来实现。您需要在两个表上进行左连接并从事实中获取每一行。在您的 first_name 过滤器中,您可以取消选择 first_name 作为“Smith”,但选择 NULL 值以显示“Klaus”

在此处输入图像描述

于 2020-05-29T14:32:55.923 回答