If statement if语句函数,用于1个值但用于1个以上的验证

If statement if语句函数,用于1个值但用于1个以上的验证,if-statement,tableau-api,If Statement,Tableau Api,我在tableau中创建计算字段时遇到了一些问题 假设我有一个“城市”变量,包含以下数据: 1. 2. 3. 4. 5. 6. 7. 八, 如果1-4成为地区A,5-8成为地区B,1-8是全国性的,我想把这个数字输入 这是我的计算存档代码 if [City]=1 or [City]=2 or [City]=3 or [City]=4 THEN "Region A" elseif [City]=5 or [City]=6 or [City]=7 or [City]=8 THEN "Region B

我在tableau中创建计算字段时遇到了一些问题

假设我有一个“城市”变量,包含以下数据: 1. 2. 3. 4. 5. 6. 7. 八,

如果1-4成为地区A,5-8成为地区B,1-8是全国性的,我想把这个数字输入

这是我的计算存档代码

if [City]=1 or [City]=2 or [City]=3 or [City]=4 THEN "Region A"
elseif [City]=5 or [City]=6 or [City]=7 or [City]=8 THEN "Region B"
elseif [City]=1 or [City]=2 or [City]=3 or [City]=4 or [City]=5 or [City]=6 or 
[City]=7 or [City]=8 THEN "National"
END
但在我创建了这个计算字段之后,只显示了“区域A”和“区域B”以及“Null”。我的想法是,代码可能在地区上与国家(或不是?)重叠

我怎样才能解决这个问题?当我的数据只有1-8的范围时,这个空值从何而来

多谢各位

编辑:


大家好,我只是想确认一下,我希望它看起来像是一个计算字段,当我点击“区域A”时,它将显示城市1-4的组合,当我点击“区域B”时,它将显示城市5-6的组合,当我点击“国家”时,它将显示城市1-8的组合。

编辑:在评论中澄清后,您需要的是一个参数。创建一个可以采用“区域A”、“区域B”和“国家”值的值。 然后创建一个计算字段,使用(我没有使用所有城市值来提高可读性):

使用该参数,您现在可以选择分组。对于[value],您需要插入要显示的列(即Sales)。如果[city]的值符合您的标准,它将用该值填充新的计算字段,如果不是,它将为空,如果是“National”,它将始终使用您定义的值

旧答案:

听起来您想创建一个层次结构来显示城市、地区和国家级别的数据。 如果是这种情况,您有几个选择:

  • 您的城市栏中有实际的城市名称,而不是1、2、3:如果您将该栏定义为地理角色,Tableau将自动创建hirachy
  • 您有1,2,3个国家,但只有一个国家:使用您已有的公式创建一个字段
    区域
    ,但保留最后一个字段如果:

    然后创建第二个计算字段
    Country
    ,只需给它赋值
    “National”
    在您的维度中,您现在可以通过在country字段顶部拖放region和city字段来创建hirachy

  • 您有1个、2个、3个和多个国家:用此公式替换第二个计算字段中的值,并创建如2所示的hirachy:

  • 关于这一点,还有几点需要注意:

    • 您可能希望使用
      案例
      ,而不是使用那么多
      IF
      ,因为它更易于阅读和维护
    • 您可能希望将其基于区域而不是城市,因为您只需要为原始示例维护例如2个区域,而不是8个城市

    您的IF声明将永远不会是全国性的,因为它对于区域A或区域B的值1-8都是真实的。我对您想要的结果感到困惑。似乎所有的城市都被列为国家级城市。那么这将如何作为最终结果呢?hi@Bernardo最终结果应该是当我点击区域A时,它将显示1-4的城市,当我点击区域B时,它将显示5-8的城市,当我点击国家时,它将显示1-8的城市,我应该在1计算字段。hi@Alexander感谢分享。事实上,我想要的不是一个等级结构。你的答案可能会像国家->地区A或国家->地区B。我想要的是,当我点击地区A时,它将显示1-4之间的城市,当我点击地区B时,它将显示5-8之间的城市,当我点击国家时,它将显示1-8之间的城市,这些类别中的3个应该在1个计算字段中。有什么想法吗?@randy你可以用一个参数。将在我确定时更新答案home@RandyAdhitama我改变了答案。应该像你现在描述的那样工作
    CASE [parameter]:
    WHEN "Region A" THEN IF [city] = 1 or [city] = 2 THEN [value] END
    WHEN "Region B" THEN IF [city] = 3 or [city] = 4 THEN [value] END
    WHEN "National" THEN [value] END
    END
    
    if [City]=1 or [City]=2 or [City]=3 or [City]=4 THEN "Region A"
    elseif [City]=5 or [City]=6 or [City]=7 or [City]=8 THEN "Region B"
    end
    
    if [City]=1 or [City]=2 or [City]=3 or [City]=4 or [City]=5 or [City]=6 or 
    [City]=7 or [City]=8 THEN "Country1"
    elseif [City]=9 or [City]=10 or [City]=11 THEN "Country2"
    END