Power 查询中基于过去 3 个月的计算列

Posted

技术标签:

【中文标题】Power 查询中基于过去 3 个月的计算列【英文标题】:Calculated columns bases on the past 3 months in Power query 【发布时间】:2021-03-26 12:58:44 【问题描述】:

第一次尝试在电源查询中使用 M...我拥有的是这张表

我需要创建两列,每行(CD_Loja x CD_Produto 的组合)返回该组合的 QT_VENDA 总和除以过去 3 个月的天数。另一列几乎相同,但用 VL_VENDA_LIQ 的总和代替。

即:对于第一行,我想总结过去 3 个月内匹配 CD_PRODUTO =1001930 AND CD_LOJA = 151 的所有 QT_VENDA(DATE 列有每日数据),然后除以这 3 个月的天数.

有没有办法做到这一点?我该怎么做呢?

提前致谢。

【问题讨论】:

“过去3个月”的定义是什么?过去 90 天?根据我要比较的月份名称——(六月在六月+五月+四月拉出所有之前的日子,或者六月在五月+四月+三月拉出所有之前的日子? 过去 3 个月就像今天() - 90 天 【参考方案1】:

在 powerquery 中,M 类似这样的东西

let Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
#"Changed Type" = Table.Buffer(Table.TransformColumnTypes(Source,"DATA", type date, "CD_PRODUCTO", type text, "CD_LOIA", type text, "QT_VENDA", Int64.Type, "VL_VENDA_LIQ", Int64.Type)),
#"Added Custom" = Table.AddColumn(#"Changed Type" ,"QT_VENDA_90",(i)=>List.Average(Table.SelectRows(#"Changed Type" , each [CD_PRODUCTO]=i[CD_PRODUCTO] and [CD_LOIA]=i[CD_LOIA] and [DATA] <= i[DATA] and [DATA] >= Date.AddDays(i[DATA] ,-90)) [QT_VENDA]), type number),
#"Added Custom2" = Table.AddColumn(#"Added Custom" ,"VL_VENDA_LIQ_90",(i)=>List.Average(Table.SelectRows(#"Changed Type" , each [CD_PRODUCTO]=i[CD_PRODUCTO] and [CD_LOIA]=i[CD_LOIA] and [DATA] <= i[DATA] and [DATA] >= Date.AddDays(i[DATA] ,-90)) [VL_VENDA_LIQ]), type number)
in #"Added Custom2"

【讨论】:

去看看试试看 适应了我的表格,但右下角的文件大小不断增加,查询永远不会完成,所有文件现在都超过 1 Gb(最初源文件有 200 mb) 好吧,它正在做无数的计算.. 对于每一行,它必须过滤所有其他行并挑选出最近的 90 行,也就是说,除非出现问题,否则它不会添加行。尝试样本数据集?或者在 powerbi 中,类似 community.powerbi.com/t5/Desktop/… 的度量 添加了 Table.Buffer 看看是否有帮助 我的错,完全是青蛙,是的,它奏效了!谢谢【参考方案2】:

您可以尝试如下测量-

your_expected_value = 

var current_row_data = MIN(your_table_name[DATA]) 
--I Guess the column name should be Date instead
var current_row_data_minus_90_day = MIN(your_table_name[DATA]) - 90 
var current_row_cd_produto = MIN(your_table_name[CD_PRODUTO])
var current_row_cd_loja = MIN(your_table_name[CD_LOJA])

RETURN
CALCULATE(
    SUM(your_table_name[QT_VENDA]),
    FILTER(
        ALL(your_table_name),
        your_table_name[DATA] >= current_row_data_minus_90_day 
        && your_table_name[DATA] <= current_row_data
        && your_table_name[CD_PRODUTO] = current_row_cd_produto
        && your_table_name[CD_LOJA] = current_row_cd_loja
    )
)/90

--Here 90 used for static 3 month consideration

【讨论】:

如果你没有一年中每一天的数据,我认为这不起作用,因为它总是除以 90 而不是除以计数 得到的只是空白,试图弄清楚...... @TallesLessa 有任何错误吗?请显示您得到的最终输出。

以上是关于Power 查询中基于过去 3 个月的计算列的主要内容,如果未能解决你的问题,请参考以下文章

如何为过去 3 个月的每个日期运行查询

Power BI KPI MATRIX

过去 13 个月的数据

计算每个国家过去 3 个月的订单月环比增长率

最近 x 个月的排名查询

如何根据 Power BI 报表中选定的月份筛选器在 MDX 查询中显示最近六个月的数据(每个月一行)?