如果语句函数为1值但超过1次验证

时间:2015-11-29 12:45:07

标签: if-statement tableau

当我在画面中创建计算字段时,我遇到了一些问题。

让我说这个“City”变量有这些数据: 1 2 3 4 五 6 7 8

我想验证这个数字,如果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”和“空”。我的想法可能是代码在Region上与National重叠(或者不是?)。

我该如何解决这个问题?当我的数据只有1-8?

的范围时,这个null来自何处

谢谢

编辑:

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

1 个答案:

答案 0 :(得分:0)

编辑:在评论中澄清之后,您需要的是一个参数。创建一个可以取值“Region A”,“Region B”和“National”的值。 然后创建一个计算字段(我没有使用所有城市值使其更具可读性):

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

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

旧答案:

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

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

    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
    

    然后创建第二个计算字段Country,只需为其赋值'National' 在您的维度中,您现在可以通过在国家/地区字段顶部拖放区域和城市字段来创建hirachy。

  3. 您有1,2,3和几个国家/地区:使用此公式替换第二个计算字段中的值,并按照2中的方式创建hirachy:

    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
    
  4. 关于此的一些进一步说明:

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