Powerbi 查询中值的幂双矩阵计数

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

我正在尝试创建一个矩阵表,该表将计算一个月内到期的工作数量,以及这些工作是否按时完成

目前我能做到这一点。

我曾尝试过总结数据、制定措施等,但都无济于事

我需要提供以下资料:

我的数据源是一系列事务行,包括

1交易到期日 2交易完成日期

术语的定义:

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] )
            )
        )
    )
)