Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 以月为单位的功率双YTD计算_Powerbi_Dax_Powerbi Desktop - Fatal编程技术网

Powerbi 以月为单位的功率双YTD计算

Powerbi 以月为单位的功率双YTD计算,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,我对YTD平均值的可视化有一个问题 我有一个excel数据库,它链接到Power BI。数据库的格式如下: 需要绘制的是基于数据的月平均值和年初至今平均值。Power BI报告有一些切片器,因此需要选择5-6个不同的区域和5-6个不同的模型类型 Montly average与每个周期的交付周期显示平均值一起工作。 期间主要是一个月,但与日历月不在同一系统中。P01是十月,P02是十一月,P03是十二月。。。。P12是九月 因此,需要计算切片机仍在工作的YTD平均值: 对于P01,月平均值和年初至

我对YTD平均值的可视化有一个问题

我有一个excel数据库,它链接到Power BI。数据库的格式如下: 需要绘制的是基于数据的月平均值和年初至今平均值。Power BI报告有一些切片器,因此需要选择5-6个不同的区域和5-6个不同的模型类型

Montly average与每个周期的交付周期显示平均值一起工作。 期间主要是一个月,但与日历月不在同一系统中。P01是十月,P02是十一月,P03是十二月。。。。P12是九月

因此,需要计算切片机仍在工作的YTD平均值:

对于P01,月平均值和年初至今平均值相同。 对于P02,月度平均值基于P02报告的所有项目,但年初至今的平均值如下: 年初至今P02=提前期之和除以P01和P02期间数量之和

对于P03,YTD应为P01-P03期间的交付周期之和除以同期的项目数量

对于P04-P12,正在进行相同的设置

我使用power Bi来显示月平均值,还可以计算月数量(计数)

我如何管理ytd将使用功率bi计算值的图形?

存在月平均数和月平均数,因此任务需要使用以下值编写函数:

  • 年初至今P01=平均交付周期P01/交付周期P01计数
  • 年初至今P02=(平均P01*计数P01+平均P02*计数P02)/(计数P01+计数P02)
  • 年初至今P03=(平均P01*计数P01+平均P02*计数P02+平均P03*计数P03)/ (计数P01+计数P02+计数P03)
。。。。直到第12页

有人对解决方案有想法吗? 提前谢谢


Gabor

当您不使用实际日期时,您的值是按升序排列的,因此应该能够使用与DAX和Power BI中的标准年初至今度量类似的模式。这里的功劳应该归于SQLBI团队,我只是在这里定制他们的工作

为了保持清楚,我建议将事情分解成几个步骤,为总交付周期和测量计数构建一年到目前为止的度量,然后再构建三分之一以给出您需要的实际平均值。如果出现问题,单独的措施也有助于调试

我假设您的数据表名为“MyTable”

[TotalLeadTimeYTD] := 
CALCULATE (
    SUM('MyTable'[Leadtime]), 
    FILTER (
        ALL ( 'MyTable' ), 
        'MyTable'[FY] = MAX ( 'MyTable'[FY] )
            && 'MyTable'[Period] <= MAX ( 'MyTable'[Period] )
    )
)
请注意,由于您没有单独的日期表,因此计算的所有(‘MyTable’)也将删除您应用的任何其他过滤器。如果这不是期望的结果,您将需要更改,以便删除期间和年份的过滤器,而不是其他过滤器。ALL('MyTable'[FY],'MyTable'[Period])可能有效,但如果没有样本数据,我们很难编写代码

已针对以下硬编码数据集对上述措施进行了测试:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcos0tFDSUQowBBKGSrE6CBEjIGGEImIMJIxhIuYYusyRdMUCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}, {"Column3", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1", "FY"}, {"Column2", "Period"}, {"Column3", "Leadtime"}})
in
    #"Renamed Columns"

这可能是一个很好的起点:嗨,BarneyL,谢谢你的快速回答,但是在&&i的TotalEadTimeYTD度量中,我无法选择正确的列。它不会出现在列表中。我可以在excel电子表格中包含样本数据,如果这有帮助的话。样本数据可能会有帮助,但您能澄清一下不能选择正确的列是什么意思吗?如果只键入所需内容,会发生什么情况?我已使用硬编码数据集的电源查询代码进行了更新。复制和粘贴中的度量值可以得到我认为准确的结果。
AverageLeadTimeYTS := DIVIDE([TotalLeadTimeYTD],[CountOfMeasuresYTD])
let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcos0tFDSUQowBBKGSrE6CBEjIGGEImIMJIxhIuYYusyRdMUCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}, {"Column3", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1", "FY"}, {"Column2", "Period"}, {"Column3", "Leadtime"}})
in
    #"Renamed Columns"