入れ子になった式: 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 エディターの仕組み

結論

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

メリッサ


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 ゲートウェイとは何ですか? 知っておくべきことすべて