【问题标题】:Tableau possible IF LOD calculationTableau 可能的 IF LOD 计算
【发布时间】:2015-06-27 07:42:57
【问题描述】:

这个看起来很简单,但我很难过。希望有人以前遇到过这个。

我要展示:

州类别 Sales$ 如果家具是该州最高销售额的类别

例如: Arizona Furniture $13,525

但是,如果家具不是顶级销售额 $ 类别,我想显示 0 或 NULL 或“红旗”。任何可能的工作,“红旗”是最好的,但我不确定我们是否可以将“ag”与字符串结合起来。

例如:阿拉巴马州家具“红旗”

感谢您提出正确的建议!

State                     Category                 Sales
Alabama                   Furniture                $6,332
                          Office Supplies          $4,209
                          Technology               $8,969

Arizona                   Furniture                $13,525
                          Office Supplies          $10,006
                          Technology               $11,751

Arkansas                  Furniture                $3,188
                          Office Supplies          $4,565
                          Technology               $3,925

California                Furniture                $156,065
                          Office Supplies          $142,352
                          Technology               $159,271

Colorado                  Furniture                $13,243
                          Office Supplies          $7,899
                          Technology               $10,966

【问题讨论】:

    标签: if-statement tableau-api


    【解决方案1】:

    让我们一步一步来。首先让我们创建一个 [max_sales] 字段:

    { FIXED [State] : MAX([Sales]) }
    

    这将为您提供类别中每个州的最大销售额。我假设这是最低级别的细节(类别)。如果不是,您可以使用另一个 LOD 计算来获得每个类别的数字:

    { FIXED [Category] : SUM([Sales]) }
    

    并在第一次计算时使用此字段。

    现在是下一部分。您不能将整数与字符串混合,但您始终可以将 int 转换为 str。我会这样做:

    IF [Category] = 'Furniture'
       THEN IF [Sales] < [max_sales]
                 THEN 'Red Flag'
            ELSE STR([Sales])
            END
    ELSE #I have no idea what you want here
    END
    

    同样,如果类别不是最低级别的详细信息,请使用 SUM([Sales]) 而不是仅使用销售额(如果 Tableau 说您不能将聚合字段与非聚合字段混合使用,则使用 MAX([max_sales]))

    【讨论】:

    • 嗨 lnox!我在上面应用了你的 LOD,它适用于一些,但不是全部。 AZ:家具的“红旗”,但所有类别都应该是“好的”,因为“家具”是最高销售额。与 CO 相同。另一个补充细节包括:并非所有州都有“家具”类别。这如何改变LOD 计算?如果没有“家具”类别,那么它仍然应该得到“ok”。
    • 您必须处理 ELSE 语句。 ELSE STR([Sales]) 应该可以正常工作,但我不确定您的数据是什么样的。尝试了解计算在做什么,以便调整它
    • IF 语句应该是 IF [Sales] >= [max_sales] THEN 'Red Flag'。当我这样做时,它起作用了,但它现在列出了所有“家具”的销售额,而不是仅仅说“好的”,因为我添加了“=”。我该如何解决这个问题?
    • 好吧,STR([Sales]) 打印销售额。如果您只想要一个“ok”,请将其替换为“ok”
    • 我只是将上面的计算应用到我的实际工作簿中并忘记了一些东西。应用 { FIXED [State] : MAX([Sales]) } 时,我忘记了 [Sales] 来自合并到最终报告中的另一个工作簿。当我用我的版本替换 MAX([Sales]) 时,该度量被命名为:SUM([WKLY_Sales_Details].[Sales]。我得到的错误是:“MAX(聚合函数)的参数已经是一个聚合,并且无法进一步聚合”帮助....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    相关资源
    最近更新 更多