【问题标题】:What is the excel equivalent of a COUNTIF with WILDCARD formula in Tableau?Tableau 中带有 WILDCARD 公式的 COUNTIF 的 excel 等效项是什么?
【发布时间】:2021-05-14 16:06:36
【问题描述】:

我正在处理我想要的 Tableau 表:

  1. 在一个维度中隔离特定的字符串记录;那么
  2. 计算特定字符串出现在该维度中的实例(所有记录)。一条记录可能包含多个但不同的文本。

假设我的 Dimension 名为“Person Type”,我有 5 条记录具有这些各自的值: 雇员、访客、雇员;访客、申请人、访客;申请人

我知道我可以首先在维度上创建一个过滤器以仅显示单个记录类型:员工、访客、申请人,但我遇到问题的地方是创建一个查看所有记录并计算实例数的计算“雇员”这个词出现在等等。在 excel 中,带有文本通配符的 COUNTIF 公式可以处理此问题。

这是我正在尝试完成的 Excel 屏幕截图。

Screenshot

编辑:尝试了一个非常接近解决方案的计算。出于某种原因,当显然有两个实例时,它不包括申请人。有人对如何改进计算有任何想法吗?

    IF CONTAINS([Person Types],'Employee') THEN "Employee"

ELSEIF CONTAINS([Person Types],'Visitor') THEN "Visitor"

ELSEIF CONTAINS([Person Types],'Applicant') THEN "Applicant"
END

result issue

【问题讨论】:

    标签: excel excel-formula tableau-api


    【解决方案1】:

    您可以在 LOD 中使用 Contains 函数,该函数的作用类似于 Excel 中的通配符 *X*

    比如:

    { FIXED [NEWFIELD]: SUM(INT(CONTAINS([PERSON],"Employee"))) }

    代码

        IF CONTAINS([Person Types],'Employee') THEN "Employee"
    
    ELSEIF CONTAINS([Person Types],'Visitor') THEN "Visitor"
    
    ELSEIF CONTAINS([Person Types],'Applicant') THEN "Applicant"
    END
    

    如果有"Employee" 或“访客”,则不会正确计算"Applicant",因为它们将优先(每个 if 都按顺序测试)。例如"Visitor; Applicant" 将返回"Visitor"

    另外,CONTAINS 区分大小写,因此您可能希望全部转换为大写,以确保匹配任何细微的大小写差异。

    IF CONTAINS(UPPER([Person Types]),"APPLICANT") THEN "Applicant"
    

    【讨论】:

    • 嗨,尼尔 - 感谢您的回复。快速提问。可以将 LOD 应用于一维吗?这个“纽菲尔德”从何而来?
    • 新字段是您正在创建的字段。关键部分是 (SUM...) PERSON 列是您要依靠的列。
    • 对于此解决方案,可能必须手动为第一个字段创建值!
    【解决方案2】:

    我重新创建了一个示例,就像您在屏幕截图中显示的那样用于演示(始终建议直接在代码中复制和粘贴一些数据行)

    步骤(Tableau Desktop)虽然在准备中更容易-

    • 连接数据后,在data source 窗格中,单击person type 字段上的向下箭头,然后单击split

    • 将自动创建两个新字段(假设一条记录中的最大人员类型为 2)或创建更多行。 (强烈建议您使用 Tableau Prep)在 Tableau prep 中,您可以直接 PIVOT 这些字段。参见方法here。但 Tableau Desktop 中不存在基于计算字段的透视

    • 将数据与自身合并 n 次(在本例中为 = 2)次。请参阅 GIF 以获取帮助

    • 使用以下计算创建一个计算字段,例如 person types(我故意添加了一个 s 以区分)
    // A single person_type for each row.
    CASE [Table Name]
    WHEN "Sheet1" THEN [Person Type - Split 1]
    WHEN "Sheet11" THEN [Person Type - Split 2]
    END
    

    排除null 值,您可以创建所需的视图

    不用说,您必须在计算字段中根据您的情况更改 [table name] 的值

    【讨论】:

    • 嗨 AnilGoyal - 感谢您的回复。我能够重新创建您的流程并最终得到相同的结果。这种方法是否适用于其中包含两个以上文本的记录?例如,具有三种人员类型的记录:员工;游客;申请人。而不是当前的 1 或 2。如果是这样,拆分方法和计算将如何适应?
    • 很高兴能帮上忙。请按 SO 上通常的要求投票并接受答案以供将来参考。对于 n>2 说 3 你必须合并你的表三次并相应地修改 case 语句。休息是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 2015-09-21
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多