我使用Power Query提取在过去一个月中测试的所有唯一项类型:
let
Source = Sql.Database("XXX", "YYY"),
dbo_tblTest = Source{[Schema="dbo",Item="tblTest"]}[Data],
#"Filtered Rows" = Table.SelectRows(dbo_tblTest, each Date.IsInPreviousNMonths([Test_Stop], 1)),
#"Added Custom" = Table.AddColumn(#"Filtered Rows", "Custom", each Text.Start([Item],5)),
#"Removed Duplicates" = Table.Distinct(#"Added Custom", {"Custom"})
in
#"Removed Duplicates"得到:
接下来,我想使用Power查询为Query1中列出的每一项类型提取过去的10次测试,而不考虑时间段。我想出了如何分别为项目类型提取过去的10个测试,但不是在一个查询中将所有测试放在一起。
let
Source = Sql.Database("XXX", "YYY"),
dbo_tblTest = Source{[Schema="dbo",Item="tblTest"]}[Data],
#"Filtered Rows" = Table.SelectRows(dbo_tblTest, each Text.StartsWith([Item], "B1846")),
#"Sorted Rows" = Table.Sort(#"Filtered Rows",{{"Test_Stop", Order.Descending}}),
#"Kept First Rows" = Table.FirstN(#"Sorted Rows",10)
in
#"Kept First Rows"得到:
是否可以使用Power查询在一个查询中提取所有需要的数据?如果没有,是否可以使用VBA和Power查询来完成?
发布于 2015-07-26 19:58:31
在Power Query中,如果您在考虑如何循环,您通常会发现一个高级库函数,它可以满足您的需要。在这种情况下,它是分组的。
按某些键对表进行分组,在您的示例中,第一个表的Custom列。您可以使用Table.TransformColumns将“保持过去10”逻辑重写为在每个分组表中应用的函数,然后将分组表展开到一个平面表中。
您的查询应该类似于:
let
Source = Sql.Database("XXX", "YYY"),
dbo_tblTest = Source{[Schema="dbo",Item="tblTest"]}[Data],
#"Added Custom" = Table.AddColumn(dbo_tblTest, "Custom", each Text.Start([Item],5)),
#"Grouped Rows" = Table.Group(#"Added Custom", {"Custom"}, {{"Grouped", each _, type table}}),
Custom2 = Table.TransformColumns(#"Grouped Rows", {{"Grouped", (groupedTable) =>
let
#"Sorted Rows" = Table.Sort(groupedTable,{{"Test_Stop", Order.Descending}}),
#"Kept First Rows" = Table.FirstN(#"Sorted Rows",10)
in
#"Kept First Rows"}}),
#"Removed Other Columns1" = Table.SelectColumns(Custom2,{"Grouped"}),
#"Expanded Grouped" = Table.ExpandTableColumn(#"Removed Other Columns1", "Grouped", Table.ColumnNames(#"Added Custom"))
in
#"Expanded Grouped"https://stackoverflow.com/questions/31620353
复制相似问题