问题描述
我目前正在尝试在 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 使用该字段重新开始运行总和计算。