如何在 Tableau 中对 running_sum 计算进行分区?

问题描述

我目前正在尝试在 Tableau 的 LOD + 表表达式中完成以下 sql

SELECT PATIENTID,CLINIC_ID,DATE,QUANTITY,SUM(QUANTITY) OVER (PARTITION BY PATIENTID ORDER BY DATE ASC) AS RUNNING_TOTAL
FROM "MY_SCHEMA".MY_SUMMARY
ORDER BY PATIENTID,DATE ASC

通常,我只会在自定义 sql 数据源中使用上述内容,但我需要在 LOD + 表计算中使用它,因为我希望从仪表板上的参数自定义开始日期。

我尝试了以下方法

RUNNING_SUM({fixed [Patientid],[Clinic Id]: SUM([Quantity]) })

但这会得到以下错误

All fields must be aggregate or constant when using table calculation functions or fields from multiple data sources

我可以成功:

RUNNING_SUM(SUM([Quantity]))

当然,这只是总和,而不是每个患者/诊所。

我也试过:

{fixed [Patientid],[Clinic Id]: RUNNING_SUM(SUM([Quantity])) }

但这会导致错误

Level of detail expressions cannot contain table calculations or the ATTR function.

解决方法

您可以进行运行总和计算,因为您已经有了它,但您还需要在患者 ID 和诊所 ID 之间创建一个复合键,该键会出现在详细信息架上,以便您能够指示Tableau 使用该字段重新开始运行总和计算。