Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tableau api Tableau基于静态列表创建布尔维_Tableau Api - Fatal编程技术网

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

Tableau api Tableau基于静态列表创建布尔维,tableau-api,Tableau Api,因此,我有一个仪表盘,它有一个特定人群中约24k名客户的列表。我们还有一些其他的客户群,有些是重叠的。一个是约182k个客户号码。在我最初的24k仪表盘中,我被要求确定哪些客户是182k人口中的一员,哪些不是。我的最终目标是一张看起来像这样的桌子: CustomerNumber MemberOf182k ABC XYZ 0000001 Y 123 456 0000002 N 7

因此,我有一个仪表盘,它有一个特定人群中约24k名客户的列表。我们还有一些其他的客户群,有些是重叠的。一个是约182k个客户号码。在我最初的24k仪表盘中,我被要求确定哪些客户是182k人口中的一员,哪些不是。我的最终目标是一张看起来像这样的桌子:

CustomerNumber    MemberOf182k    ABC    XYZ
0000001           Y               123    456
0000002           N               789    012
我的问题是仪表板中的数据是自定义SQL查询。它吸引了我的24k人口。182k人口从来不是来自一个数据源——它来自多个不同的数据源,现在存在于Excel文件和主报告中

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

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

有人知道我会怎么做吗?我试着在这个计算字段中粘贴一个182k客户编号的列表,但遗憾的是,它锁定了我。我希望我可以创建一个列表作为表中的参考,因为这个列表永远不会改变,然后在创建一个新的计算字段时将其用作比较。。。。有什么想法吗?提前谢谢

创建一个静态列表通常不是一个好主意(正如您在计算字段中看到的那样);考虑它是从数据源读取的。 您可能需要向Tableau团队澄清,他们不愿意在生产中使用Excel文件作为数据源。我猜这纯粹是因为刷新困难(即:文件更改位置、可能因使用而被锁定、保存在个人计算机上等),因为您的182k列表从未更改,您可以通过以下步骤解决他们的这一担忧:

  • 连接到Tableau桌面中的Excel数据源
  • 提取数据
  • 发布提取到Tableau服务器。
  • 不对已发布的摘录授予刷新权限
  • Tableau Server不会在意此数据的基础源是否为Excel。它只会看到它是一个超抽取

    从那时起,在组织和混合数据方面,您仍有一些工作要做。(此时Tableau不支持Tableau提取上的跨数据库联接,在本例中这是理想的。)只要两者之间有一个像ID这样的公共字段,它就应该可以工作。它可能是这样的:

    (如果TabLeo团队担心在一个抽取中有一个绑定到一个底层Excel数据源,你也可以考虑。这将需要一些编码,但是你可以基本上从Excel移动到Python,并直接到一个数据提取中,没有引用Excel)。 要显示总Y和N,请执行以下步骤:

    是表: 创建以下计算字段:

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

    将它们放在标记卡上:(行或列上没有任何内容。)

    无纸张: 创建以下计算字段:

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

    将它们放在标记卡上:(行或列上没有任何内容。)


    非常感谢您-这看起来会非常有效。我走这条路。我甚至没有想过做另一个数据源和摘录这很有效,但我有点问题。我想计算所有的Y和N。所以,我认为类似COUNTD的东西(如果ATTR([Customer Number])=ATTR([Phase_1A_182k_Population]。[Member Nr]),那么ATTR([Phase_1A_182k_Population]。[Customer Nr])可以工作,但我得到“COUNTD的参数已经是一个聚合,无法进一步聚合”。我正在比较的字段是每个数据源中的字段。我没有任何其他聚合正在进行。我想,好吧,删除ATTR(),但它告诉我所有字段都必须是聚合或常量。关于如何获得具有Y和N计数的计算字段以便在仪表板顶部显示它们,有什么想法吗?混合会让事情变得困难。我已经更新了我的答案,以显示如何制作包含Y和N总数的表格。您将看到编辑为每个字段都包含一个新的计算字段,该字段创建整数而不是字符串,因此可以方便地对它们进行计数。然后你会看到我使用一个表格计算来计算它们。这有点老套,但应该行得通。特别是如果你只是想显示数字。理想情况下,您可以将这些工作表的格式设置为与您的仪表板样式相匹配,并将它们浮动到需要的位置。是的,确实如此!这太完美了。对不起,我已经实施了,但上周我太疯狂了,所以我没有机会跟进。非常感谢你!
    //[WindowSum (N)]//
    If FIRST() = 0 THEN WINDOW_SUM([Is in 182k? (N)]) END
    
    Right Click on [WindowSum (N)] > Edit Table Calculation...