【问题标题】:using if statements in tableau on a contains function在包含函数的画面中使用 if 语句
【发布时间】:2015-09-08 10:45:14
【问题描述】:

假设我有美国每个州/城市的城市人口。我想将每个人口超过 200 万的城市标记为大城市。那么如果一个州包含一个“大城市”,我想将该州标记为“大州”。我做了一个计算字段:

如果 Pop>2000000 则“大城市”否则“小城市”结束
这工作正常。

现在,当我尝试为状态创建计算字段时,我尝试了以下操作:

if contains([big city],"big") then "big state" else "small state" end

这几乎可行,但是当我只想要一个值(大状态或小状态)时,我会为每个状态获得多个值。如何阻止 tableau 创建多个值?

【问题讨论】:

    标签: if-statement contains tableau-api


    【解决方案1】:

    您可以尝试使用涉及两个计算字段的方法。

    假设你的big_city、small_city计算是一个名为City_Size的计算字段

    现在,First Calculated 字段将根据 City_Size 的值为每一行分配 1 或 0。将其命名为is_big_state

    if City_Size = 'big' then
        1
    else
        0
    end
    

    现在将此计算字段用于另一个计算,称为State_type

    IIF(Max(City_Size) = 1, "Big State", "Small State")
    

    编辑:您可以将两者合二为一:

    IIF(Max(iif(City_Size = 'big', 1, 0)) = 1, "Big State", "Small State")
    

    【讨论】:

      【解决方案2】:

      state 默认设置为"small state"

      当您检查城市人口时,如果找到"big city",请将state 设置为"big state"

      if Pop > 2000000
          then "big city"
               "big state"
      else
          "small city"
      

      【讨论】:

      • 嗨,布鲁斯,感谢您的回复。我不相信你的等式在画面中有效,在你的“then”语句之后有一个逻辑错误(你不能像那样将大城市和大州一起设置)。另外,这是一个更复杂问题的简单版本,所以我不能使用变通方法:)
      • if contains([big city],"big") then "big state" else "small state" - 从你的代码中删除else "small state" 怎么样?这样一来,大州就不会被设置为大小州。
      • 因为我也想标记没有大城市的州......而且我的真实代码无论如何都要复杂一些,它更像是 if value>7 then x elseif value >4 then y else z...所以我只是想把逻辑到位以开发其他东西:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      相关资源
      最近更新 更多