【问题标题】:Create a conditional column on tableau在 tableau 上创建条件列
【发布时间】:2021-04-26 01:01:22
【问题描述】:

我将如何在 tableau 上创建一个条件列,该列在下面给出的输入中返回以下输出-

Type1       Type2       Type3    Desired output
ice-cream   null        null      ice-cream
crisps      candy     ice-cream   ice-cream
crisps      candy      candy      candy
ice-cream   crisps     null       crisps

我希望能够根据这个条件过滤数据。不幸的是,我不能在 SQL 上执行此操作,因为 CTE 会大大增加服务器上的执行时间,因此我需要创建一个参数+计算字段来执行此操作。 因此,过滤器将采用类型 3 中的值(如果存在)作为输出 否则它取类型 2 中的值,最后如果 type2 和 3 为 null,它取 type1 中的值

【问题讨论】:

    标签: sql tableau-api visualization


    【解决方案1】:

    SQL 表达式:

    select t.*, coalesce(type3, type2, type1) as desired
    from t
    

    不应显着增加运行时间。我想不出添加这样一个计算会改变执行计划的数据库——除了每行的单个计算。

    我不明白为什么需要 CTE。您也可以使用子查询。

    【讨论】:

      【解决方案2】:

      这是一个业务规则的示例:

      For the desired output column:
      -- if the type3 column is not null return that.
      -- otherwise if the type2 column is not null return that.
      -- otherwise if the type3 column is not null return that
      -- otherwise return null
      

      您不是 100% 清楚自己的业务规则,但看起来像

       COALESCE(type3,type2,type1) 
      

      会给出你需要的结果。这可以过滤

      【讨论】:

      • 业务规则?还需要tableau而不是sql的答案!!
      • @KFC1999 如果你不想要 SQL,为什么还要有 SQL 标签?你不知道业务规则是什么意思吗?这意味着定义“期望输出”列的输出的逻辑规则是什么
      • 啊,这不是实际数据,它是我为 SO 问题准备的样本 df
      • @KFC1999 -- 我写了一个例子来说明我对您的业务规则的猜测。如果是别的东西,那么你应该说清楚(因为 Gordan 认为这是同一件事)
      • 会记住上面的——通常我在上面被教导为编程逻辑,但谢谢!
      【解决方案3】:

      使用以下计算在 Tableau 中创建计算字段

      IF [TYPE3] <> 'null' THEN
      [Type3] 
      Elseif [Type2] <> 'null' THEN
      [TYPE2] 
      Else [type1]
      End
      

      不幸的是,tableau 无法将“null”识别为单独的数据类型,因此无法使用 ifnull/isnull 函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-23
        • 2010-12-28
        • 1970-01-01
        • 2019-02-15
        • 2019-06-19
        • 2019-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多