gpt4 book ai didi

loops - 电源查询循环

转载 作者:行者123 更新时间:2023-12-04 00:21:42 33 4
gpt4 key购买 nike

我使用 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"

得到:

  1. Test_ID --- Item --- Test_Start --- Test_Stop --- Custom
  2. 2585048 --- B1846-6-02 --- 1/14/2014 12:46 --- 6/25/2015 14:28 --- B1846
  3. 2589879 --- B1843-5-05 --- 12/23/2013 16:46 --- 6/25/2015 14:19 --- B1843
  4. 2633483 --- B1907-1-04 --- 8/21/2014 20:47 --- 6/10/2015 6:20 --- B1907
  5. 2638786 --- B1361-2-04 --- 6/13/2013 14:21 --- 6/16/2015 14:15 --- B1361
  6. 2675663 --- B1345-2-02 --- 5/23/2014 18:39 --- 6/25/2015 21:27 --- B1345

接下来,我想使用 Power Query 为 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"

得到:

  1. Test_ID --- Item --- Test_Start --- Test_Stop --- Value
  2. 11717643 --- B1846-6-02 --- 7/23/2015 12:48 --- 7/23/2015 12:57 --- 43725341
  3. 11716432 --- B1846-1-21 --- 7/23/2015 10:23 --- 7/23/2015 10:29 --- 43724705
  4. 11715802 --- B1846-1-21 --- 7/23/2015 9:28 --- 7/23/2015 10:29 --- 43724720
  5. 11715505 --- B1846-1-21 --- 7/23/2015 8:59 --- 7/23/2015 9:06 --- 43724675
  6. 11715424 --- B1846-1-21 --- 7/23/2015 8:36 --- 7/23/2015 8:59 --- 43724690
  7. 11713680 --- B1846-1-55 --- 7/23/2015 5:50 --- 7/23/2015 6:07 --- 43725239
  8. 11691169 --- B1846-6-04 --- 7/20/2015 22:47 --- 7/22/2015 20:18 --- 43642835
  9. 11690466 --- B1846-6-04 --- 7/20/2015 21:30 --- 7/22/2015 18:41 --- 43642729
  10. 11701183 --- B1846-1-140 --- 7/21/2015 21:34 --- 7/21/2015 22:24 --- 43667358
  11. 11701184 --- B1846-6-04 --- 7/21/2013 20:35 --- 7/21/2015 20:46 --- 43667359

是否可以使用 Power Query 在一个查询中提取所有需要的数据?如果没有,是否可以将 VBA 与 Power Query 结合使用来完成它?

最佳答案

在 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"

关于loops - 电源查询循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620353/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com