Tableau api Tableau混合骨料和非骨料结果错误

Tableau api Tableau混合骨料和非骨料结果错误,tableau-api,calculated-field,Tableau Api,Calculated Field,在Tableau中创建计算字段时遇到问题。我有这样的数据: ID ... Status Step1 Step2 Step3 1 ... Accepted 1 1 1 2 ... Waiting 1 0 0 3 ... Discard 0 0 0 4 ... Waiting 1 1 0 .

在Tableau中创建计算字段时遇到问题。我有这样的数据:

ID    ...   Status     Step1    Step2    Step3
1     ...   Accepted   1        1        1
2     ...   Waiting    1        0        0
3     ...   Discard    0        0        0
4     ...   Waiting    1        1        0
...
我想创建一个计算列,该列将为我提供最后一步的名称,但仅当状态为“已接受”时。否则我要的是状态。语法非常简单,如下所示:

IF [Status] = 'Accepted' THEN (
    IF [Step3] = 1 THEN 'Step3' ELSEIF [STEP2] = 1 THEN 'Step2' ELSEIF [STEP1] = '1' THEN 'Step1' ELSE 'Step0') 
ELSE [Status]
问题在于,“状态”列是一个维度,“步骤”状态来自度量。所以它们是AGG(步骤1),AGG(步骤2),。。。 我想这就是我得到这个错误的原因:

Cannot mix aggregate and non-aggregate comparisons or results in 'IF' expressions.

我对画面不是很熟悉。你知道如何解决这个问题吗?

表格自动将数值解释为度量值。在您的例子中,它们似乎是一个布尔值(0表示false,1表示true),实际上应该是维度


将步骤1、步骤2和步骤3转换为尺寸标注。突出显示字段,单击鼠标右键,然后选择“转换为维度”。

解决方案:

只需使用函数ATTR,即可将非聚合函数(Status)转换为聚合函数。然后,可以将它们结合起来进行计算

IF ATTR([Status]) = 'Accepted' THEN (
    IF [Step3] = 1 THEN 'Step3' ELSEIF [STEP2] = 1 THEN 'Step2' ELSEIF [STEP1] = '1' THEN 'Step1' ELSE 'Step0') 
ELSE ATTR([Status])

嗨,你的[step3]量表的格式是什么?假设它是一个数字,尝试将其更改为一个字符串,这会消除错误吗?嘿,这是从实际代码中复制和粘贴的吗?对于step if语句,您似乎在说如果步骤3和2等于数字1,那么在步骤1中,您在说如果它等于字符串(“1”)。更改此选项是否解决了您的问题?您能否显示步骤1的定义?它是数据集中的计算字段还是显式字段您可能会发现使用多个数据源更容易——假设它们都是由数据窗格中的不同联接创建的相同基础表的视图。一个数据源,每个ID有一行,用于回答诸如每个项目的当前状态等问题。另一个数据源每次状态变化都有记录(例如,记录到目前为止,第#3项已更改为第2步),该数据源将方便其他类型的问题,比如那些专注于跟踪随时间变化的状态变化的问题