Powerbi 查询中值的幂双矩阵计数
我正在尝试创建一个矩阵表,该表将计算一个月内到期的工作数量,以及这些工作是否按时完成 目前我能做到这一点。 我曾尝试过总结数据、制定措施等,但都无济于事 我需要提供以下资料: 我的数据源是一系列事务行,包括 1交易到期日 2交易完成日期 术语的定义:Powerbi 查询中值的幂双矩阵计数,powerbi,dax,Powerbi,Dax,我正在尝试创建一个矩阵表,该表将计算一个月内到期的工作数量,以及这些工作是否按时完成 目前我能做到这一点。 我曾尝试过总结数据、制定措施等,但都无济于事 我需要提供以下资料: 我的数据源是一系列事务行,包括 1交易到期日 2交易完成日期 术语的定义: Due in month Count of due date Done on time Completed within due month Outside time completed outside
Due in month Count of due date
Done on time Completed within due month
Outside time completed outside due month
"%Perf" percentage completed on time.
在此方面的任何帮助都将不胜感激
增加以下措施: 应采取的措施: 按时完成的措施: 测量外部时间: 度量%Perf 按报告中的到期日和月份分组 有关PBIX文件的示例,请参见 更新评论中的问题后编辑: 若你们真的需要,你们可以通过多种方式创建一个可视化的方法,将这些度量和每月的完成日期计数结合起来。这里有一种方法: 创建报告列表: 添加矩阵可视化,表1[到期日]在行,报告列[标题]在列,而[报告度量]在值中。适合的格式
更新的示例PBIX文件:如果您提供数据模型的图像,将非常有用。DAX取决于数据结构及其关系。感谢您的回复,所有信息都来自一个带有以下相关字段的表:[job_id]-[due_date],[completed],due date format DD/MM/YYYY,completed DD/MM/YYYY hh:MM能否包含20行数据,以便我们理解您所说的内容。此外,不完整是什么意思?一般前提是某项工作在某个月内登记,如果在到期月份内完成,则视为按时完成,如果在随后的任何一个月内完成,则视为超时。如果没有完成日期,则视为不完整。我希望这有助于澄清我的问题添加数据图像。谢谢奥利,我会尝试,当我回到我的电脑前,我会让你知道我的进展情况。太棒了,看起来它会起作用,我想,然后创建四月,我需要为每个月创建另一个度量,计算完成的日期并应用于该列?有人可以帮助计算每月的列总数吗?奥利,你是一个明星,看起来不错,只有一个问题,你能在报告中的到期日前澄清该组。如果我在查询编辑器中按此分组,它将创建一个新列,或者我接错了您。再次感谢。我只是指将字段due_date.month放在矩阵可视化的行部分,如示例PBIX文件中所示。
Due = COUNTROWS ( Table1 )
Done on time =
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
CALCULATE (
[Due],
FILTER (
Table1,
MONTH ( Table1[completed] ) = DueMonth
)
)
Outside time =
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
CALCULATE (
[Due],
FILTER (
Table1,
MONTH ( Table1[completed] ) <> DueMonth &&
NOT ISBLANK ( Table1[completed] )
)
)
Incomplete =
VAR DueMonth = MONTH ( FIRSTDATE ( Table1[due_date] ) )
RETURN
CALCULATE (
[Due],
FILTER (
Table1,
ISBLANK ( Table1[completed] )
)
)
% Perf =
DIVIDE (
[Done on time],
[Due],
BLANK()
)
Report Columns =
VAR ListMeasures =
DATATABLE (
"Header", STRING,
"Sort Order", INTEGER,
"First Of Month", DATETIME,
{
{"Due in month", 1, BLANK() },
{"Done on time", 2, BLANK() },
{"Outside time", 3, BLANK() },
{"Incomplete", 4, BLANK() },
{"% Perf", 5, BLANK() }
}
)
VAR ListMonths =
CALCULATETABLE(
GROUPBY (
ADDCOLUMNS (
DISTINCT ( Table1[completed] ),
"Header", FORMAT ( Table1[completed], "YYYY-MMM" ),
"Sort Order", YEAR ( Table1[completed] ) * 100 + MONTH ( Table1[completed] ),
"First Of Month", DATE ( YEAR ( Table1[completed] ), MONTH ( Table1[completed] ), 1 )
),
[Header], [Sort Order], [First Of Month]
),
Table1[completed] <> BLANK()
)
RETURN
UNION (
ListMeasures,
ListMonths
)
Report Measure =
IF (
NOT HASONEFILTER ( 'Report Columns'[Header] ),
BLANK(),
SWITCH (
VALUES ( 'Report Columns'[Header] ),
"Due in month", [Due],
"Done on time", [Done on time],
"Outside time", [Outside time],
"Incomplete", [Incomplete],
"% Perf", [% Perf],
CALCULATE (
[Due],
FILTER (
Table1,
DATE ( YEAR ( Table1[completed] ), MONTH ( Table1[completed] ), 1 ) = VALUES ( 'Report Columns'[First Of Month] )
)
)
)
)