3

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 --- 項目 --- Test_Start --- Test_Stop --- カスタム
  2. 2585048 --- B1846-6-02 --- 2014 年 1 月 14 日 12:46 --- 2015 年 6 月 25 日 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 --- 2013 年 6 月 13 日 14:21 --- 2015 年 6 月 16 日 14:15 --- B1361
  6. 2675663 --- B1345-2-02 --- 2014 年 5 月 23 日 18:39 --- 2015 年 6 月 25 日 21:27 --- B1345

次に、Power Query を使用して、期間に関係なく、Query1 にリストされている項目の種類ごとに過去 10 個のテストを取得します。アイテム タイプの過去 10 個のテストを個別に取得する方法を見つけましたが、1 つのクエリですべてをまとめることはできませんでした。

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

Power Query を使用して、必要なすべてのデータを 1 つのクエリで取得することはできますか? そうでない場合、Power Query で VBA を使用してそれを実行することは可能ですか?

4

1 に答える 1

5

Power Query でループの方法を考えている場合、必要な処理を実行する高次のライブラリ関数を見つけることがよくあります。この場合、それはグループ化です。

グループ化は、いくつかのキーでテーブルを分割します。この場合、Custom最初のテーブルの列です。を使用してグループ化された各テーブル内に適用する関数に「10 を超える」ロジックを書き直してからTable.TransformColumns、グループ化されたテーブルを 1 つのフラット テーブルに展開することができます。

クエリは次のようになります。

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"
于 2015-07-26T19:58:31.870 に答える