我有三张桌子。
第一个表是 REPORTS_MASTER_LIST 包含 REPORT_NAME、REPORT_CATEGORY 列。这包含用户可以执行的所有报告及其类别。
第二个表是 USER_REPORT_EXECUTION 包含 USERNAME、REPORT_NAME、REPORT_CATEGORY 列。该表中的每一行都是由用户执行的报告。
第三个表是 USER_DEPARTMENTS_LIST 包含 USERNAME、USER_DEPARTMENT 列。这包含所有用户及其部门。
我想创建一个矩阵,在左侧(行)显示REPORT_TYPE,可以展开以显示REPORT_NAME。在矩阵(列)的顶部,它应该是USER_DEPARTMENT。矩阵中显示的值应该是计数,代表 USER_DEPARTMENT 对于每个 REPORT_NAME 执行的报告数量。
目前我可以仅使用 USER_REPORT_EXECUTION 和 USER_DEPARTMENT 表来执行此操作。问题是,如果 REPORTS_MASTER_LIST 中有一个从未被用户执行过的报告,它不会显示在矩阵中,尽管我需要它显示并为每个 USER_DEPARTMENT 显示“0” 。有没有办法通过以某种方式将 REPORTS_MASTER_LIST 表集成到矩阵中来做到这一点?
我使用了这个示例数据,因为你没有提供任何数据:
表 REPORTS_MASTER_LIST :
REPORT_NAME REPORT_CATEGORY
Report A Type 1
Report B Type 1
Report C Type 2
表 USER_REPORT_EXECUTION :
USERNAME REPORT_NAME REPORT_CATEGORY
User1 Report A Type 1
User2 Report A Type 1
User1 Report B Type 1
表 USER_DEPARTMENTS_LIST :
USERNAME USER_DEPARTMENT
User1 Dept 1
User2 Dept 2
我创建了以下关系:
您需要创建一个度量来计算报告执行次数,同时包含计数为零的报告:
Report Execution Count =
CALCULATE(
COUNTROWS(USER_REPORT_EXECUTION),
USER_REPORT_EXECUTION[REPORT_NAME]
)
然后使用 COALESCE 将未执行的报告显示为 0:
Report Execution Count (All Reports) =
COALESCE(
CALCULATE(
COUNTROWS(USER_REPORT_EXECUTION),
USER_REPORT_EXECUTION[REPORT_NAME] IN VALUES(REPORTS_MASTER_LIST[REPORT_NAME])
),
0
)