【发布时间】:2021-03-17 22:53:29
【问题描述】:
让我们考虑一个项目管理场景,其中项目状态从 Open (1) 变为 In-Progress (2),最后是 Closed (3)。在这个例子中,我有 10 个项目。我的要求是根据日期和/或状态类型生成项目计数。这里的关键是度量返回的值与评估上下文相关。
这是项目状态表:
现在看看下面的表格,至少部分是预期的结果。
例如:2 月 6 日,我们在系统中有 4 个项目,其中 2 个处于打开状态,1 个正在进行中,1 个已关闭。截至 2 月 6 日,这给了我总共 4 个项目。它查看 7 行的数据,即 self 和前 6 行。如果我想知道截至今天的项目状态,我们只需要查看 12 月 24 日的最后一个条目,它会给我 10 个。
当我在没有日期和状态类型列的表格上显示计算项目数量的度量时,我希望值为 10。在这种情况下,我的上下文过滤器没有日期和状态类型可供过滤.
如果我的可视化(矩阵)只有 Status Type 作为我期望的列字段:
如果我的矩阵将日期作为行字段,将状态类型作为列字段,那么我希望看到我之前显示的内容。
我诚挚地希望您能就应对这一挑战的最佳方式提出建议。作为第一次尝试,我想出了一些东西,它并没有给我带来我期望的东西,而是试图解决我所拥有的东西,如果我以正确的方式解决这个问题,我将不胜感激您的 cmets。
Project Status Count =
VAR MaxKnownDate =
MAX ( 'Project Status'[Status Date] )
VAR StatusSummaryBase =
SUMMARIZE (
'Date'
,'Date'[Date]
)
VAR StatusSummary =
CALCULATETABLE (
ADDCOLUMNS (
StatusSummaryBase,
"Latest Count",
VAR DateSnapshot = 'Date'[Date]
RETURN
CALCULATE (
COUNTX (
'Project Status',
'Project Status'[Project Id]
),
LASTNONBLANK (
FILTER(
ALL('Date'),
'Date'[Date] <= DateSnapshot
),
COUNTROWS(RELATEDTABLE('Project Status'))
)
)
)
,FILTER (
ALL ( 'Project Status'[Status Date] ),
'Project Status'[Status Date] <= MaxKnownDate
)
)
VAR Result =
SUMX(StatusSummary, [Latest Count])
RETURN
Result
我知道我可能仍需要检查是否存在上下文过滤器,例如数据和状态类型,以便进行正确的计算。
【问题讨论】:
-
3 月 15 日,我可以看到项目 id 2,3 和 5 已打开。那天你是如何在 Open (1) 列中获得 2 分的?