【问题标题】:TABLEAU: How to create a single calculated field from multiple columns filtering表:如何从多列过滤创建单个计算字段
【发布时间】:2018-03-26 09:00:54
【问题描述】:

我对 tableau 相当陌生,并且在各种在线帮助论坛中进行了搜索,但未能找到与我相似的论坛。因此在这里发布了这个。不确定这是一个相当简单的还是复杂的(我认为!)

我有 3 列(2 个维度和 1 个度量),我想根据维度列中出现的一些字符串来使用度量列。

让列分别为“事件”、“屏幕”和“时间”

让值如下表所示(注意:还有许多其他值,但我只需要小写的值,即要排除 NULL 和 NAVIGATION)

我想要一个单个计算字段,其中包含三个步骤,结果如下:

(2*Event 中“提交姓名”的发生次数) - 对应“提交姓名”的平均 时间(来自 Event ) * 事件)
+

中“提交姓名”的次数

(2*Event 中“添加地址”的发生次数) - 对应“添加地址”的平均 时间(来自屏幕 ) * 事件)
+

中“添加地址”的次数

(2*事件中的“订单创建”次数) - (平均时间对应的“订单”总和+“订单详情”+“订单确认” "(来自 screen)* Event 中“订单创建”的次数)

我的方法:

我已将 EventScreen 维度拖到 filter pane 并选择了所有值,包括 NAVIGATION AND NULL(因为这些字段对应于我在计算中需要的时间),但它并没有奏效!

我还为计算的三个步骤(上图)中的每一个创建了事件和屏幕参数,但它也不起作用!

那么,实现上述计算的最佳方法是什么?

非常感谢任何帮助。

【问题讨论】:

    标签: tableau-api


    【解决方案1】:

    这样的?请注意,示例数据和您的示例计算(提交的名称与提交的名称)之间的大小写存在差异,因此您可能需要为此调整以下内容。

    (
        (2 * SUM(IIF([Event] = 'Name submitted',1,NULL)))
        - 
        (
            AVG(IIF([Event] = 'Name submitted',[Time],NULL))
            * SUM(IIF([Event] = 'Name submitted',1,NULL))
        )
    )
    
    +
    
    (
        (2 * SUM(IIF([Event] = 'Address added',1,NULL)))
        -
        (
            AVG(IIF([Screen] = 'Add address',[Time],NULL))
            * SUM(IIF([Event] = 'Address added',1,NULL))
        )
    )
    
    +
    
    (
        (2 * SUM(IIF([Event] = 'order created',1,NULL)))
        -
        (
            AVG(IIF([Screen] = 'orders'
                    OR [Screen] = 'order detail'
                    OR [Screen] = 'order confirmation'
                ,[Time],NULL))
            * SUM(IIF([Event] = 'order created',1,NULL))
        )
    )
    

    【讨论】:

    • 根据要求/示例计算使用屏幕标准编辑中间部分以平均时间。
    • 我一直在使用 IF() 而不是 IIF()。你介意解释一下这两者之间的区别吗?因为它可能有助于我更好地理解解决方案。谢谢!
    • IF 不是一个函数,它是一个语句(所以没有 IF())。通常唯一的区别是语法。 IIF 的任何使用都可以重写为 IF 语句和 CASE 语句。至少我想不出一个不真实的场景。在另一个函数(例如 SUM)中时,我总是使用 IIF,因为在我看来它更短且更具可读性。只是我的喜好。
    【解决方案2】:

    您可以在计算中考虑过滤器。因此,对于您的第一部分,它可能类似于以下内容:

    (2*count(if [Event]='name submitted' then [number of records] end)) - avg(if [Event]='name submitted' then [time] end)*count(if [Event]='name submitted' then [number of records] end)
    

    我不确定您的操作顺序,但您可以根据需要进行调整。对您的其他计算重复此格式。

    【讨论】:

    • 与我的问题相对应,[记录数] 是什么意思?
    • 这是一个默认度量,显示在度量列表的末尾。它只是一个带有“1”的计算字段。
    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2014-10-12
    • 2017-04-01
    相关资源
    最近更新 更多