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 コードを理解していれば、それは難しくありません。

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

ではごきげんよう!

メリッサ


Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。