Python における Self とは: 実際の例
Python における Self とは: 実際の例
このチュートリアルでは、 Power Queryの入れ子になった式、オブジェクト、環境について学習します。ネストされた式と変数は、環境がどのように機能し、データの生成に役立つかを説明するために使用されます。また、ネストされたオブジェクトを変換するときの一般的なシナリオに対処する方法も学習します。
目次
ネストされた式の作成
式は、値を構築するために使用される式として定義されます。
数式バーの式は部分式から構築されます。リテラル 1 と 2 は、親式のサブ式です。
変数は名前付きの値として定義されます。これはサンプルレコードです。
[詳細エディター] ウィンドウを開くと、クエリで使用されている変数を確認できます。
変数a、b、およびcはそれぞれ、等号の後によく見られる式の結果である値を表します。レコード自体である親式内のすべての変数は、そのレコードの環境を形成します。その環境内では、各変数は一意である必要があります。
したがって、 cという別の変数を追加すると、詳細エディター ウィンドウの下にエラー メッセージが表示されます。
レコードは、識別子または変数名を使用して、そのすべての部分式にアクセスできます。ただし、レコード内のネストされた式の場合は、自分自身を除くレコード内の他のすべての変数にアクセスできるため、各環境は異なります。
この例では、変数cがそれ自体を参照していることがわかります。
完了を押すと、エラー メッセージが表示されます。
item アクセス演算子を追加してcの値を抽出すると、結果が得られます。let式でも同じルールが適用されるため、同じ結果を得ることができます。
環境内のネストされた式を理解する
これはレコード値の別の例です。
Advanced Editor ウィンドウを開くと、変数aと変数bが同じ環境、つまり最外部の環境を共有していることがわかります。また、変数x、y、およびzが親式aの部分式であることもわかります。
各変数は、それ自体を除く、ネストされたレコード内の他のすべての変数にアクセスできます。別の環境に存在する変数を呼び出すことができます。この例では、 zが外部環境にあるbを参照していることがわかります。
bは親式環境の一部であるため、変数x、y、およびzはbにアクセスできます。同じ変数を異なる環境に持つこともできます。
この別の例では、内部レコードと外部レコードに変数xがあることがわかります。
変数は、それぞれの環境内で一意である必要があります。変数に割り当てられた最も近いxが使用されます。このサンプル クエリでは、レコードaの観点からは内側のx の方が近いため、内側の x が使用されます。
この他のクエリでは、変数bに近い最も近いxが式で使用されます。
外部変数b は、項目アクセス演算子を使用してレコードa内の変数xを参照できます。変数aを参照し、角括弧のセットを使用してxにアクセスする必要があります。同様に、レコードa は変数b内の変数xを参照できます。
ネストされたレコードaの環境が親式の変数とマージされると、xが 2 回存在し、すべての変数が環境内で一意である必要があるため、競合が発生します。変数はそれ自体を参照できないため、競合は外側のx を参照することで解決されます。
一般的なシナリオの解決
一般的なシナリオは、ネストされたオブジェクトを変換することです。説明のために、このテーブルを使用します。
外部テーブルから値を取得し、それをネストしたテーブルに配置する場合、それを実現する方法が 2 つあります。1 つ目の方法は、「カスタム列の追加」オプションを使用することです。
プレビュー ペインの左上隅にあるテーブル アイコンをクリックし、[カスタム列の追加] を選択します。
列名として Temp を入力し、カスタム列の式にプレースホルダーを入力します。完了したら、「OK」を押します。
数式バー内で、入れ子になったテーブルに列を追加して、各式をカスタム関数に置き換えます。カスタム関数のロジックを開始し、それを外部テーブルのOTと呼びます。次に、行き先標識を追加します。
次に、Table.AddColumn関数を使用して列を追加します。「名前」列にある外側の表の表を参照してください。そして、新しい列名を入力します。
この例では、列名はRevenueとして使用されます。each関数を入力して、「Get Revenue」列の各行の値を取得します。
Temp 列の行のセル内のスペースをクリックすると、プレビュー ペインの下にネストされたテーブルのプレビューが表示されます。各行に外部テーブルの値が含まれていることがわかります。
変数を使用して値を保存する
ネストされたオブジェクトを変換する 2 番目の方法は、変数を使用して値を保存することです。まず、カスタム列を追加し、列名として「Temp2」を入力します。数式の場合は、let式を使用して値を変数に格納します。
letと入力し、変数名を書き込みます。この例では、変数名はmyRです。次に、変数を Get Revenue 列と同等にします。その後、in句を入力し、 Table.AddColumn関数を使用して、入れ子になったテーブルに列を追加します。
関数の最初のパラメーターとして、ネストされたテーブルを含む Names 列を入力します。次に、新しい列に「収益」という名前を付けます。eachを使用して各行の変数を呼び出します。
Temp2 列の行のセル内のスペースをクリックすると、外部テーブルから値が取得されたことがわかります。
もう 1 つの一般的なシナリオは、共有キーがない場合の検索です。このシナリオでは、カテゴリ テーブルと製品テーブルの2 つのサンプル テーブルが使用されます。
カテゴリ テーブルをステージング クエリとして使用して、製品ディメンション テーブルの属性を補完します。共有キーがないため、マージは実行できません。最初に行うことは、カスタム列の追加を使用して、製品テーブル クエリに完全なカテゴリ テーブルをネストすることです。
カスタム列を追加し、列名として「カテゴリ」を記述します。次に、カスタム式でカテゴリ クエリを呼び出します。
これで、完全なカテゴリ テーブルが製品テーブルの各行にネストされました。
「カテゴリ」列の行のセル内のスペースをクリックすると、各行に完全なカテゴリ表が表示されます。
単一の値の取得
単一の値のみを取得したい場合は、製品の文字列の一部がカテゴリ テーブル内の製品グループと一致する単一の行までカテゴリ テーブルをフィルタリングする必要があります。
[適用されたステップ] ペインの [追加されたカスタム] の横にある歯車ボタンを押して、[カスタム列] ダイアログ ボックスを開きます。
数式に、Table.SelectRows関数を追加します。最初のパラメータには、Category テーブルが使用されます。2 番目のパラメーターでは、Text.Contains関数を条件として使用しました。内部テーブルの場合、この関数はテキストに外部テーブルの製品文字列の一部が含まれているかどうかをチェックします。
外部テーブルにアクセスすると、 Power Query によって数式バー内にeachキーワードが追加されることがわかります。これは、アンダースコア ( _ ) を名前のない変数として受け取る単項関数です。ただし、列にアクセスするだけなので省略できます。
「カテゴリ」列の行のセル内のスペースをクリックすると、ネストされた各テーブルに 1 つの行が表示されます。
そこから、行アクセス演算子とフィールド アクセス演算子の組み合わせを使用して、カテゴリの値を抽出できます。
[カスタム列] ダイアログ ボックスに戻り、数式に演算子を追加します。テーブルの最初の行を取得するには、一連の中括弧の中に0を入力します。次に、フィールド名「Category」を角括弧の中にリストします。
ソリューションを将来も保証するには、最後に疑問符 ( ? ) を追加して、見つからない動作をエラーを null に返すことから変更できます。
LuckyTemplates M 言語でのクエリ エディターと LuckyTemplates での Power Query エディターの仕組み
結論
環境とネストされた式は、クエリがコードから特定の値を取り出して望ましい結果を提供するのに役立ちます。これらを理解すると、より高度で複雑なシナリオを解決できるようになるため、関数を作成するときにそれらを認識することが重要です。
メリッサ
Python における Self とは: 実際の例
R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。
この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。
このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。
この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。
LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。
LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。
このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。
これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。
LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて