关于用销售表清洗去重来构建产品表的性能优化

Power Query jeffh ⋅ 于 2020-08-26 12:08:40 ⋅ 最后回复由 Feilau 2020-11-30 14:58:44 ⋅ 2073 阅读

平时为了快捷直接使用销售表里面的产品信息清洗去重得到一张产品表用来搭建数据模型。因为产品信息每个月在更新,所以可能会产生同一个产品1月和6月的销售记录中某一个属性不一样的情况,遇到这样的情况,统一使用最近一次销售记录的产品信息。源数据销售表有超过20万行,清洗完的产品表有约60,000个SKU。
file
我想了两个方案,但是性能都不好,想请教一下大神们有没有更好的解法或者我现在的Query有提升空间
方案一:Table.Buffer倒序排序销售日期后按产品编号去重

let
    Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"产品编号", Int64.Type}}),
    #"Sorted Rows" = Table.Buffer(Table.Sort(#"Changed Type",{{"销售日期", Order.Descending}})),
    #"Removed Duplicates" = Table.Distinct(#"Sorted Rows", {"产品编号"}),
    #"Removed Other Columns" = Table.SelectColumns(#"Removed Duplicates",{"产品编号", "产品类别", "产品子类别", "产品颜色", "产品尺寸"})
in
    #"Removed Other Columns"

方案二:Table.Group嵌套Table.SelectRows

let
    Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"产品编号", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"产品编号"}, {{"产品信息", each Table.Distinct(Table.SelectRows(_, (x) => Number.From(x[销售日期])=Number.From(List.Max(_[销售日期]))))}}),
    #"Expanded 产品信息" = Table.ExpandTableColumn(#"Grouped Rows", "产品信息", {"产品类别", "产品子类别", "产品颜色", "产品尺寸"}, {"产品类别", "产品子类别", "产品颜色", "产品尺寸"})
in
    #"Expanded 产品信息"
成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • Feilau
    2020-11-30 14:58:44

    6万个SKU在数据模型里面也很难用得快。不如考虑下如何将6万个SKU变成少一些的产品种类进行分析。
    关于优化,第二个方案中的分组步骤,可以考虑下这个,看性能是不是比原来的快些。

    "Grouped Rows" = Table.Group(#"Changed Type", {"产品编号"}, {{"产品信息", each Table.Max(_,"销售日期")[产品编号], type text}}),

    另外你说的性能不好是刷新时候需要多少分钟才完成刷新?可以用Power Query 的 Diagnostics 看下两个方法的占用时间。

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