Tableau基于静态列表创建布尔维度

时间:2019-03-28 22:32:25

标签: tableau

因此,我有一个仪表板,该仪表板列出了特定人群中的〜24k客户。我们也有其他一些客户群,有些重叠。一个是约182,000个客户号码。我被要求在我的24k原始仪表板中,确定其中哪些客户是182k人口的成员,而哪些不是。我的最终目标将是一个看起来像这样的表:

CustomerNumber    MemberOf182k    ABC    XYZ
0000001           Y               123    456
0000002           N               789    012

我的问题是仪表板中的数据是自定义SQL查询。它吸引了我约24000的人口。 182k人口不是来自一个数据源,而是来自多个不同的数据源,现在存在于Excel文件和主报告中。

为了进一步使事情复杂化,我们的Tableau团队不喜欢将Excel文件用作生产中的数据源,因此我需要弄清楚如何在Tableau(可能是一个维度)中为182k客户编号创建某种静态列表然后执行一个计算字段,如:

IF CONTAINS([182kPop],[24kPop])=TRUE THEN 'Y' ELSE 'N' END

有人知道我会怎么做吗?我尝试在此计算字段中粘贴一个182k客户编号的列表,但可惜,它锁定了我。我希望我可以在Tableu中创建某种形式的列表作为参考,因为该列表永远不会改变,然后在创建新的计算字段时将其用作比较...。有什么想法吗?在此先感谢!

1 个答案:

答案 0 :(得分:1)

通常创建一个静态列表不是一个好主意(就像您在计算字段中看到的那样)。Tableau并非为此而创建;考虑将其设计为从数据源读取。

您可能想与Tableau团队说明他们不愿意将Excel文件作为生产中的数据源。我想这纯粹是出于刷新困难的原因(例如:文件更改位置,可能因使用而被锁定,保存在个人计算机上等)由于您的182k列表从不更改,因此您可以通过完成以下步骤:

  1. 连接到Tableau Desktop中的Excel数据源
  2. 提取数据
  3. 提取发布到Tableau Server。
    1. 不授予刷新权限以发布的摘录。

Tableau Server不会在乎此数据的基础源是Excel。它只会看到它是一个超级提取。

从那里开始,在组织和混合数据时,您仍然需要做一些工作。 (此时,Tableau不支持在Tableau数据提取上进行跨数据库联接-在这种情况下将是理想的选择。)只要两者之间存在诸如ID之类的公共字段,它就应该起作用。看起来可能像这样:

enter image description here

enter image description here

enter image description here

(如果Tableau团队担心甚至与Extract中的基础Excel数据源相关联,您也可以考虑使用Tableau Data Extract API。这将需要一些编码,但实际上您可以从Excel迁移到Python并直接导入到数据提取中,而无需参考Excel。)

要显示Y和N的总数,请执行以下步骤:

是的工作表:

创建以下计算字段:

//[Is in 182k? (Y)]//
IF ATTR([24k ID]) = ATTR([182k].[182k ID]) THEN 1 END

//[WindowSum (Y)]//
If FIRST() = 0 THEN WINDOW_SUM([Is in 182k? (Y)]) END

将它们按如下方式放置在标记卡上:(行或列无任何内容。)

enter image description here

Right Click on [WindowSum (Y)] > Edit Table Calculation...

enter image description here

无工作表:

创建以下计算字段:

//[Is in 182k? (N)]//
IF ATTR([24k ID]) = ATTR([182k].[182k ID]) THEN NULL ELSE 1 END

//[WindowSum (N)]//
If FIRST() = 0 THEN WINDOW_SUM([Is in 182k? (N)]) END

将它们按如下方式放置在标记卡上:(行或列无任何内容。)

enter image description here

Right Click on [WindowSum (N)] > Edit Table Calculation...

enter image description here