【问题标题】:How to we make a filter(from a calculated field) a context filter in Tableau我们如何使过滤器(来自计算字段)成为 Tableau 中的上下文过滤器
【发布时间】:2015-11-06 20:04:12
【问题描述】:

我有一个名为 Booking_Size 的计算字段,其公式为:

IF RANK_PERCENTILE(SUM(BK_Total)) >= 0 AND RANK_PERCENTILE(SUM(BK_Total))

ELSEIF RANK_PERCENTILE(SUM([BK_Total])) >= .5 AND RANK_PERCENTILE(SUM([BK_Total))

ELSEIF RANK_PERCENTILE(SUM([BK_Total])) >= .7 AND RANK_PERCENTILE(SUM([BK_Total]))

ELSEIF RANK_PERCENTILE(SUM([BK_Total])) >= .9 AND RANK_PERCENTILE(SUM([BK_Total))

ELSE '大' 结束

我想将此作为上下文过滤器,因为如果我在上述过滤器之上使用任何其他过滤器,则上述过滤器(Booking_Size 过滤器)中的 RANK PERCENTILE 函数正在重新计算已过滤的表。

【问题讨论】:

    标签: tableau-api


    【解决方案1】:

    您不能将表计算过滤器变成上下文过滤器。

    上下文过滤器在数据源(也称为数据库服务器)的操作管道中很早就被评估。 Tableau(又名客户端)在操作管道中很晚才计算表计算。

    因此,您问为什么根据定义在一台计算机上发生较晚的事情不能设置为在另一台计算机上较早发生。原因是 rank_percentile 等表计算函数是由 Tableau 自己实现的,作用于数据库或数据源返回的聚合查询结果。

    如果您想在管道的早期推送该功能,则需要使用原始数据源提供的功能。因此,如果您的数据库支持 rank_percentile 等功能,您可以将它们放入底层查询中,例如使用自定义 sql,或者通过 SQL 调用,或者通过在数据库中定义视图。

    顺便说一句,您的计算字段不必要地重复比较测试

    如果您将名为 rk 的计算字段定义为 RANK_PERCENTILE(SUM(BK_Total))

    然后您的字段可以更有效地定义如下,因为每个测试都可以假设先前的测试失败。

    if rk < .5 then
      'Small'
    elseif rk < .7 then 
      'Medium Small'
    elseif rk < .9 then
      'Medium'
    elseif rk < .95 then
      'Medium Large'
    else
      'Large'
    end
    

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 2021-11-22
      • 2015-12-07
      • 2020-06-01
      • 2015-08-25
      • 2020-12-25
      • 2021-01-29
      • 2021-06-08
      • 1970-01-01
      相关资源
      最近更新 更多