【发布时间】:2022-12-22 11:38:01
【问题描述】:
我正在使用 Power Query,我需要将主表拆分为多个表。是否可以根据 2 个值条件将一个表拆分为多个表?
我有下表,我需要根据产品和工作日创建多个表
预期的输出如下所示:
你知道我该怎么做吗?我每天有多种产品
【问题讨论】:
-
AFAIK,单个查询只能输出单个表。如果您想要多个表,则需要创建多个相关查询。
标签: split powerquery m
我正在使用 Power Query,我需要将主表拆分为多个表。是否可以根据 2 个值条件将一个表拆分为多个表?
我有下表,我需要根据产品和工作日创建多个表
预期的输出如下所示:
你知道我该怎么做吗?我每天有多种产品
【问题讨论】:
标签: split powerquery m
如 cmets 中所述,一个 PowerQuery 查询不可能生成多个表。只能输出一张表。
因此,您需要将数据模块化。
从源表开始:
tbl_SourceData
let
Source = Table.FromRows(
{
{"ID0003", "7/18/2022", "Mon", 1, 523},
{"ID0003", "7/16/2022", "Sat", 6, 235},
{"ID001", "7/18/2022", "Mon", 1, 124},
{"ID001", "7/4/2022", "Mon", 1, 125},
{"ID001", "7/15/2022", "Fri", 5, 132},
{"ID001", "7/1/2022", "Fri", 5, 124},
{"ID001", "7/16/2022", "Sat", 6, 413},
{"ID001", "7/17/2022", "Sun", 7, 124},
{"ID002", "7/15/2022", "Fri", 5, 523},
{"ID003", "7/15/2022", "Fri", 5, 324}
},
{"Product", "Date", "Weekdate", "#Weekdate", "Volume"}
),
fix_Date = Table.TransformColumns(Source,{{"Date", each Date.From(_, "en-US"), type date}}),
fix_Types = Table.TransformColumnTypes(fix_Date, {{"Product", type text}, {"Weekdate", type text}, {"Date", type date}, {"#Weekdate", Int64.Type}, {"Volume", Int64.Type}})
in
fix_Types
如果您检查 Productx#Weekdate 组合的数量,您会发现您需要构建 8 个不同的子查询:
tbl_UniqueCombinations
let
Source = tbl_SourceData,
Select = Table.SelectColumns(Source,{"Product", "#Weekdate"}),
Distinct = Table.Distinct(Select)
in
Distinct
出于这个答案的目的,我不会一一列举。但是您至少可以看到您需要为它们中的每一个执行的过程。
tbl_ID003_1
let
Source = tbl_SourceData,
Filter = Table.SelectRows(Source, each ([Product] = "ID001") and ([#"#Weekdate"] = 1))
in
Filter
tbl_ID003_5
let
Source = tbl_SourceData,
Filter = Table.SelectRows(Source, each ([Product] = "ID001") and ([#"#Weekdate"] = 5))
in
Filter
tbl_ID0003_1
let
Source = tbl_SourceData,
Filter = Table.SelectRows(Source, each ([Product] = "ID0003") and ([#"#Weekdate"] = 1))
in
Filter
tbl_ID0003_6
let
Source = tbl_SourceData,
Filter = Table.SelectRows(Source, each ([Product] = "ID0003") and ([#"#Weekdate"] = 6))
in
Filter
所以,最终,您最终会得到许多不同的表格供您使用:
【讨论】: