如果有一组多个条件的月累计数据清单,如何求单个月的当月数据清单

Power Query 天天吃鸡 ⋅ 于 2018-09-11 19:38:43 ⋅ 最后回复由 焦棚子 2018-09-11 20:51:45 ⋅ 2858 阅读

有一组数据清单,每月都有3000多条数据,但都是当年截至到当月的多条件累计数据,我希望将其变换为当月值
目前的我的方法是依据条件分组,然后透视月份,再手动一条一套的添加列,如2月-1月求出2月的当月值,最后全部月份添加后再逆透视回来。这种方法导致每个月都要手动添加新的月份数据,而且因为数据多了,非常卡,半天打不开。如何更高效呢?

不是dax函数,而是用power query将累计值清单转换为当月值的清单

下面是高级编辑器的部分内容,(删除了17年的数据,不然很长)

分组的行 = Table.Group(删除的副本1, {"险种", "产品线", "项目", "县支公司 ", "15险类", "项目2", "年月"}, {{"计数", each List.Sum([本年同期累计]), type number}}),
已透视列 = Table.Pivot(Table.TransformColumnTypes(分组的行, {{"年月", type text}}, "zh-CN"), List.Distinct(Table.TransformColumnTypes(分组的行, {{"年月", type text}}, "zh-CN")[年月]), "年月", "计数", List.Sum),   
年18.2 = Table.AddColumn(年17.12, ".2018/2/1", each if [#"2018/2/1"]<>null and [#"2018/1/1"]=null then [#"2018/2/1"] else if [#"2018/2/1"]<>null and [#"2018/1/1"]<>null then [#"2018/2/1"]-[#"2018/1/1"] else null),
年18.3 = Table.AddColumn(年18.2, ".2018/3/1", each if [#"2018/3/1"]<>null and [#"2018/2/1"]=null then [#"2018/3/1"] else if [#"2018/3/1"]<>null and [#"2018/2/1"]<>null then [#"2018/3/1"]-[#"2018/2/1"] else null),
年18.4 = Table.AddColumn(年18.3, ".2018/4/1", each if [#"2018/4/1"]<>null and [#"2018/3/1"]=null then [#"2018/4/1"] else if [#"2018/4/1"]<>null and [#"2018/3/1"]<>null then [#"2018/4/1"]-[#"2018/3/1"] else null),
年18.5 = Table.AddColumn(年18.4, ".2018/5/1", each if [#"2018/5/1"]<>null and [#"2018/4/1"]=null then [#"2018/5/1"] else if [#"2018/5/1"]<>null and [#"2018/4/1"]<>null then [#"2018/5/1"]-[#"2018/4/1"] else null),
删除的列1 = Table.RemoveColumns(年18.5,{"2018/2/1", "2018/3/1", "2018/4/1", "2018/5/1"}),
重排序的列 = Table.ReorderColumns(删除的列1,{"险种", "产品线", "项目", "县支公司", "15险类", "项目2", "2018/1/1", ".2018/2/1", ".2018/3/1", ".2018/4/1", ".2018/5/1"}),
更改的类型3 = Table.TransformColumnTypes(重排序的列,{{".2018/2/1", type number},{".2018/3/1", type number}, {".2018/4/1", type number}, {".2018/5/1", type number}}),
逆透视的列 = Table.UnpivotOtherColumns(更改的类型3, {"险种", "产品线", "项目", "县支公司", "15险类", "项         目2"}, "属性", "值"),

file

成为第一个点赞的人吧 :bowtie:
回复数量: 2
  • 雷公子
    2018-09-11 20:38:36

    只有我一个没看懂吗?

  • 焦棚子 微软 MVP
    2018-09-11 20:51:45

    我理解你的想法就是想做一个mtd吧。dax时间智能函数mtd可以处理吧。

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter