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 个月的计算列的主要内容,如果未能解决你的问题,请参考以下文章