入れ子になった式: Power Query 環境

入れ子になった式: Power Query 環境

このチュートリアルでは、 Power Queryの入れ子になった式、オブジェクト、環境について学習します。ネストされた式と変数は、環境がどのように機能し、データの生成に役立つかを説明するために使用されます。また、ネストされたオブジェクトを変換するときの一般的なシナリオに対処する方法も学習します。

目次

ネストされた式の作成

式は、値を構築するために使用される式として定義されます。

入れ子になった式: Power Query 環境

数式バーの式は部分式から構築されます。リテラル 1 と 2 は、親式のサブ式です。

変数は名前付きの値として定義されます。これはサンプルレコードです。

入れ子になった式: Power Query 環境

[詳細エディター] ウィンドウを開くと、クエリで使用されている変数を確認できます。

入れ子になった式: Power Query 環境

変数ab、およびcはそれぞれ、等号の後によく見られる式の結果である値を表します。レコード自体である親式内のすべての変数は、そのレコードの環境を形成します。その環境内では、各変数は一意である必要があります。

したがって、 cという別の変数を追加すると、詳細エディター ウィンドウの下にエラー メッセージが表示されます。

入れ子になった式: Power Query 環境

入れ子になった式: Power Query 環境

レコードは、識別子または変数名を使用して、そのすべての部分式にアクセスできます。ただし、レコード内のネストされた式の場合は、自分自身を除くレコード内の他のすべての変数にアクセスできるため、各環境は異なります。

この例では、変数cがそれ自体を参照していることがわかります。

入れ子になった式: Power Query 環境

完了を押すと、エラー メッセージが表示されます。

入れ子になった式: Power Query 環境

item アクセス演算子を追加してcの値を抽出すると、結果が得られます。let式でも同じルールが適用されるため、同じ結果を得ることができます。

入れ子になった式: Power Query 環境

環境内のネストされた式を理解する

これはレコード値の別の例です。

入れ子になった式: Power Query 環境

Advanced Editor ウィンドウを開くと、変数aと変数bが同じ環境、つまり最外部の環境を共有していることがわかります。また、変数xy、およびzが親式aの部分式であることもわかります。

入れ子になった式: Power Query 環境

各変数は、それ自体を除く、ネストされたレコード内の他のすべての変数にアクセスできます。別の環境に存在する変数を呼び出すことができます。この例では、 zが外部環境にあるbを参照していることがわかります。

入れ子になった式: Power Query 環境

bは親式環境の一部であるため、変数xy、およびzはbにアクセスできます。同じ変数を異なる環境に持つこともできます。

この別の例では、内部レコードと外部レコードに変数xがあることがわかります。

入れ子になった式: Power Query 環境

変数は、それぞれの環境内で一意である必要があります。変数に割り当てられた最も近いxが使用されます。このサンプル クエリでは、レコードaの観点からは内側のx の方が近いため、内側の x が使用されます。

入れ子になった式: Power Query 環境

この他のクエリでは、変数bに近い最も近いxが式で使用されます。

入れ子になった式: Power Query 環境

外部変数b は、項目アクセス演算子を使用してレコードa内の変数xを参照できます。変数aを参照し、角括弧のセットを使用してxにアクセスする必要があります。同様に、レコードa は変数b内の変数xを参照できます。

入れ子になった式: Power Query 環境

ネストされたレコードaの環境が親式の変数とマージされると、xが 2 回存在し、すべての変数が環境内で一意である必要があるため、競合が発生します。変数はそれ自体を参照できないため、競合は外側のx を参照することで解決されます。

入れ子になった式: Power Query 環境

一般的なシナリオの解決

一般的なシナリオは、ネストされたオブジェクトを変換することです。説明のために、このテーブルを使用します。

入れ子になった式: Power Query 環境

外部テーブルから値を取得し、それをネストしたテーブルに配置する場合、それを実現する方法が 2 つあります。1 つ目の方法は、「カスタム列の追加」オプションを使用することです

プレビュー ペインの左上隅にあるテーブル アイコンをクリックし、[カスタム列の追加] を選択します。

入れ子になった式: Power Query 環境

列名として Temp を入力し、カスタム列の式にプレースホルダーを入力します。完了したら、「OK」を押します。

入れ子になった式: Power Query 環境

数式バー内で、入れ子になったテーブルに列を追加して、各式をカスタム関数に置き換えます。カスタム関数のロジックを開始し、それを外部テーブルのOTと呼びます。次に、行き先標識を追加します。

次に、Table.AddColumn関数を使用して列を追加します。「名前」列にある外側の表の表を参照してください。そして、新しい列名を入力します。

この例では、列名はRevenueとして使用されます。each関数を入力して、「Get Revenue」列の各行の値を取得します。

入れ子になった式: Power Query 環境

Temp 列の行のセル内のスペースをクリックすると、プレビュー ペインの下にネストされたテーブルのプレビューが表示されます。各行に外部テーブルの値が含まれていることがわかります。

入れ子になった式: Power Query 環境

変数を使用して値を保存する

ネストされたオブジェクトを変換する 2 番目の方法は、変数を使用して値を保存することです。まず、カスタム列を追加し、列名として「Temp2」を入力します。数式の場合は、let式を使用して値を変数に格納します。

letと入力し、変数名を書き込みます。この例では、変数名はmyRです。次に、変数を Get Revenue 列と同等にします。その後、in句を入力し、 Table.AddColumn関数を使用して、入れ子になったテーブルに列を追加します。

関数の最初のパラメーターとして、ネストされたテーブルを含む Names 列を入力します。次に、新しい列に「収益」という名前を付けます。eachを使用して各行の変数を呼び出します。

入れ子になった式: Power Query 環境

Temp2 列の行のセル内のスペースをクリックすると、外部テーブルから値が取得されたことがわかります。

入れ子になった式: Power Query 環境

もう 1 つの一般的なシナリオは、共有キーがない場合の検索です。このシナリオでは、カテゴリ テーブル製品テーブルの2 つのサンプル テーブルが使用されます。

入れ子になった式: Power Query 環境

入れ子になった式: Power Query 環境

カテゴリ テーブルをステージング クエリとして使用して、製品ディメンション テーブルの属性を補完します。共有キーがないため、マージは実行できません。最初に行うことは、カスタム列の追加を使用して、製品テーブル クエリに完全なカテゴリ テーブルをネストすることです。

カスタム列を追加し、列名として「カテゴリ」を記述します。次に、カスタム式でカテゴリ クエリを呼び出します。

入れ子になった式: Power Query 環境

これで、完全なカテゴリ テーブルが製品テーブルの各行にネストされました。

入れ子になった式: Power Query 環境

「カテゴリ」列の行のセル内のスペースをクリックすると、各行に完全なカテゴリ表が表示されます。

入れ子になった式: Power Query 環境

単一の値の取得

単一の値のみを取得したい場合は、製品の文字列の一部がカテゴリ テーブル内の製品グループと一致する単一の行までカテゴリ テーブルをフィルタリングする必要があります。

[適用されたステップ] ペインの [追加されたカスタム] の横にある歯車ボタンを押して、[カスタム列] ダイアログ ボックスを開きます。

入れ子になった式: Power Query 環境

数式に、Table.SelectRows関数を追加します。最初のパラメータには、Category テーブルが使用されます。2 番目のパラメーターでは、Text.Contains関数を条件として使用しました。内部テーブルの場合、この関数はテキストに外部テーブルの製品文字列の一部が含まれているかどうかをチェックします。

入れ子になった式: Power Query 環境

外部テーブルにアクセスすると、 Power Query によって数式バー内にeachキーワードが追加されることがわかります。これは、アンダースコア ( _ ) を名前のない変数として受け取る単項関数です。ただし、列にアクセスするだけなので省略できます。

入れ子になった式: Power Query 環境

「カテゴリ」列の行のセル内のスペースをクリックすると、ネストされた各テーブルに 1 つの行が表示されます。

入れ子になった式: Power Query 環境

そこから、行アクセス演算子とフィールド アクセス演算子の組み合わせを使用して、カテゴリの値を抽出できます。

[カスタム列] ダイアログ ボックスに戻り、数式に演算子を追加します。テーブルの最初の行を取得するには、一連の中括弧の中に0を入力します。次に、フィールド名「Category」を角括弧の中にリストします。

入れ子になった式: Power Query 環境

ソリューションを将来も保証するには、最後に疑問符 ( ? ) を追加して、見つからない動作をエラーを null に返すことから変更できます。


LuckyTemplates M 言語でのクエリ エディターと LuckyTemplates での Power Query エディターの仕組み

結論

環境とネストされた式は、クエリがコードから特定の値を取り出して望ましい結果を提供するのに役立ちます。これらを理解すると、より高度で複雑なシナリオを解決できるようになるため、関数を作成するときにそれらを認識することが重要です。

メリッサ


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 を使用して数式内に仮想リレーションシップを作成する方法を説明します。