Power Query テーブルの列を動的に結合する方法

Power Query テーブルの列を動的に結合する方法

このチュートリアルでは、 Power Query テーブル内の変化する列数を動的にマージする方法について、で提起された興味深い質問を検討します。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

このシナリオは、未知の数の隣接する列にデータが溢れる原因となる生データのエクスポートを扱います。この例を見ると、説明が列 4 にはみ出しており、説明 2 が 2 つの隣接する列に分割されていることがわかります。しかし、常にそうとは限りません。次のサイクルでは、この列の数が変更される可能性があります。

Power Query テーブルの列を動的に結合する方法

解決策に入る前に、列を結合するときに Power Query が生成する M コードを調べてみましょう。

目次

パワークエリテーブルMコード

列を結合するには、いくつかの方法があります。1 つは、説明列の両方を選択し、Shift キーまたは Ctrl キーを押してから列 4 も選択することです。次に、右クリックして[列の結合]を選択します。

Power Query テーブルの列を動的に結合する方法

または、[変換]タブで、[列の結合]を選択します。このダイアログ ボックスが表示され、セパレータを選択できます。

Power Query テーブルの列を動的に結合する方法

ポップアップ ボックスで [タブ] を選択すると、新しい列名を入力できます。この場合は、「説明」という名前を付けました。

Power Query テーブルの列を動的に結合する方法

数式バーには、この変換ステップで作成された M コードが表示されます。

Power Query テーブルの列を動的に結合する方法

数式バーが画面に表示されない場合は、[表示] タブに移動してオンにします。

Power Query テーブルの列を動的に結合する方法

したがって、Power Query が列を結合するために使用する関数はTable.CombinedColumnsです。最初のパラメータはテーブルです。このテーブルはコードの前のステップによって返されるため、適用ステップでは、これがSourceと呼ばれていることがわかります。

次に、リスト内の列名をハードコーディングしました。ここには、リスト初期化子と、テキスト内の値の間、列名の説明、および列名の列 4 が表示されます。次に、別の M 関数を呼び出して、これらの列内のテキスト値を結合します。

Power Query テーブルの列を動的に結合する方法

最後に、新しい列名をテキストとして渡すので、それを調整できます。

Power Query テーブルの列を動的に結合する方法

したがって、この関数で変化する数の列を動的にマージしたい場合は、ハードコーディングされた列名のリストが含まれる 2 番目のパラメーター値を変更する必要があります。

Power Query テーブル内の変化する数の列を結合する

生データのクエリに戻り、列名を詳しく見てみると、各流出列が匿名であることがわかります。これらには適切な名前はありませんが、すべてテキスト列で始まり、その後に数字が続きます。それを使えるかどうか見てみましょう。まず、ここを右クリックして [参照] を選択して参照を作成します

Power Query テーブルの列を動的に結合する方法

数式バー内の列名を取得するには、Table.ColumnNamesを追加します。この関数は、そのテーブルのすべての列名のリストを返します。[To Table]をクリックして、これをテーブルに戻しましょう。

Power Query テーブルの列を動的に結合する方法

このポップアップ ボックスで、[OK] をクリックします。

Power Query テーブルの列を動的に結合する方法

次に、[列の追加]タブで[形式]を選択し、[トリミング]を選択します。

Power Query テーブルの列を動的に結合する方法

これは私が実行したい変換ではありませんが、大部分の M コードを生成します。私がしなければならないのは、そのトリム関数を独自のロジックに置き換えることだけです。

Power Query テーブルの列を動的に結合する方法

したがって、数式バー内で、Text.Trimの代わりにif Text.StartsWith と入力し、それをColumn 1にポイントすると、それをすぐにコピーします。探しているテキストが必要なので、それは Column になります。したがって、テキスト列で始まる場合は「null」が必要です。それ以外の場合は、列 1 にあるものがすべて必要です。その列の名前を変更することもできるので、数式バー内で、Trim の代わりにGroupColumnと呼びましょう。

Power Query テーブルの列を動的に結合する方法

あとは、これらの値を入力するだけです。そこで、ヘッダーを右クリックし、[Fill]を選択し、[Down] を選択します。

Power Query テーブルの列を動的に結合する方法

したがって、次回データが到着し、その列数が変更されたときに、このグループは自動的にそのデータを取得します。

Power Query テーブルの列を動的に結合する方法

このクエリの名前を変更して、列グループと呼びます。

Power Query テーブルの列を動的に結合する方法

これは単なるサポートクエリであるため、そのロードが無効になっていることを確認しましょう。

Power Query テーブルの列を動的に結合する方法

このサポート クエリを参照できます。後で名前を変更します。それは今は置いておきましょう。覚えていると思いますが、最初は 2 つの列を結合し、列名を含むハードコーディングされたリストを作成しましたが、今度はGroupColumn のdescription でフィルター できるようになりました。

Power Query テーブルの列を動的に結合する方法

したがって、列 1 内の説明に対してフィルターを実行すると、その基準を満たす列が得られます。

Power Query テーブルの列を動的に結合する方法

ただし、これは表であり、リストではありません。これらの列をマージ操作に含める必要があるため、最初の列に残っているものを抽出する必要があります。そのためには、列 1 のヘッダーを右クリックして[ドリルダウン]を選択します。

Power Query テーブルの列を動的に結合する方法

そして今、リストを取得します。そこで、このクエリに適切な名前 ( ListDescr ) を付けて、ロードが無効になっているかどうかを確認してみましょう。

Power Query テーブルの列を動的に結合する方法

ここで、Result クエリに戻り、ここで 2 番目の引数を動的リストに置き換えます。したがって、ここでListDescrを参照できます。

Power Query テーブルの列を動的に結合する方法

説明 2 についてもこれを繰り返してみましょう。ColumnGroups クエリに進みます。別の参照を作成し、必要な列を選択します。次に、説明 2 をフィルター処理します。これにより、これら 3 つの列が返されます。ヘッダーを右クリックして [ドリルダウン] を選択し、このクエリの名前も変更します ( ListDescr2 )。

次に、結果クエリに戻り、[説明 2] 列を選択し、Shift キーまたは Ctrl キーを押して次の列 (列 2) も選択します。ヘッダーを右クリックし、[列の結合]を選択します。

Power Query テーブルの列を動的に結合する方法

ポップアップ ボックスで、区切り記号として [タブ] を選択し、これを [説明 2] という名前にします。

Power Query テーブルの列を動的に結合する方法

ここで数式バーの列名を変更するだけです。このハードコードされたリストも、作成したばかりのリストから変更します。そしてご覧のとおり、以前に除外した列 8 も選択されています。

Power Query テーブルの列を動的に結合する方法


LuckyTemplates でクエリを結合する方法
LuckyTemplates クエリ パラメーター: テーブルの最適化
LuckyTemplates での日付テーブルの列の並べ替え

結論

このブログでは、Power Query で M コードを使用して列を動的に結合する方法を説明しました。Power Query の仕組みと使用する M コードを理解していれば、それは難しくありません。

楽しんでいただけたでしょうか。関連コンテンツの詳細については、以下のリンクをご覧ください。

ではごきげんよう!

メリッサ


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて