Python における Self とは: 実際の例
Python における Self とは: 実際の例
今日は LuckyTemplates のテーブルについてお話したいと思います。私たちはあらゆる問題でいつもテーブルにぶつかりますが、一人で問題を考えることに多くの時間を費やすことはありません。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。
最近、LuckyTemplates メンバーの Ashton から投稿がありました。彼は常に示唆に富んだ良い質問を考え出します。彼の質問をきっかけに、私はよく見かけるパターンについて考えるようになり、このチュートリアルで取り上げたいと思いました。
それは彼が犯した間違いではありませんでしたが、よくある間違いです。たとえば、そもそも仮想テーブルではない場合など、仮想テーブルで問題が発生していると言う人を何度も見かけます。
LuckyTemplates のテーブルの種類には実際の違いがあります。
私が例えるなら、誰かが「最近犬を飼ったのですが、その犬のことで困っているので助けてもらえませんか」と言ってきたとき、それが犬ではなくオオカミだった場合です。どちらもイヌ科ですが、考慮すべき大きな違いがいくつかあります。
したがって、LuckyTemplates のテーブルと同様に、これらはすべて同じファミリーに属しますが、ソリューションとそれらのテーブルの使用方法に実際に影響を与える重要な違いです。そこで、私がやりたかったのは、Ashton の質問を再検討し、LuckyTemplates で見つかるテーブル間の違いを少し掘り下げて、それがテーブルの処理方法にどのような影響を与えるかを示すことでした。
質問は非常に単純でしたが、最初に見えたものよりももう少し奥があります。彼は、顧客、購入した果物の種類、数量、そしてインデックス番号だけを記載した単純なデータセットを持っていました。
彼は、複数選択機能を備えたスライサーを使用して、たとえばオレンジを選択すると、オレンジを購入したすべてのクライアントを表示するだけでなく、他に何を購入したかも表示できるようにしたいと考えていました。
したがって、この選択 (オレンジ色) をオフにすると、完全なデータセットが表示されます。また、これらはオレンジを購入した 2 人の顧客 (ジョーとメアリー) ですが、それぞれ追加の購入もあったこともわかります。
したがって、私たちが最初に知っていることは、フルーツ スライサーは切断されたスライサー テーブルである必要があるということです。通常のスライサーの場合は、オレンジをヒットすると、基本的にテーブル内のオレンジ以外のすべてが削除されます。また、これは動的であるため、仮想テーブルの問題があることもわかっています。
それでは、これについて少し詳しく説明していきますが、その前に、LuckyTemplates にあるさまざまな種類のテーブルを見てみましょう。
目次
LuckyTemplates の 3 種類のテーブル
私たちが定期的に見かけるテーブルには 3 種類あります。最初のテーブルは最も一般的なもので、物理テーブルであり、実際にはプライマリ データです。データの取得を行うとき、またはこのオプションまたはPower Queryで直接データを入力するときは常に、参照または複製を実行するか、物理テーブルである日付テーブルなどの空のクエリを介してデータを読み込みます。
物理テーブルは完全に動的ではありませんが、物理データであるため、ファイル サイズを増加させるその他の特性をすべて備えています。Power Query からアクセスできます。通常、データ モデル内の関係は、物理的な関係を通じて構築されます。必ずしもそうである必要はありませんが、通常はそうなります。これらはプライマリ データに使用され、データ ビューまたは Power Query を通じて視覚化します。
物理テーブルは完全に動的ではありませんが、物理データであるため、ファイル サイズを増加させるその他の特性をすべて備えています。Power Query からアクセスできます。通常、データ モデル内の関係は、物理的な関係を通じて構築されます。必ずしもそうである必要はありませんが、通常はそうなります。これらはプライマリ データに使用され、データ ビューまたは Power Query を通じて視覚化します。
仮想テーブルとよく混同されるのは、この計算テーブル、または DAX 式テーブルとも呼ばれるものです。これは、 DAX式を通じて作成される計算列に直接似ています。これは、[モデリング] タブと [新しいテーブル] オプションを使用して実行し、DAX 式を入力します。
仮想テーブルとよく混同されるのは、この計算テーブル、または DAX 式テーブルとも呼ばれるものです。これは、DAX 式を通じて作成される計算列に直接似ています。これは、[モデリング] タブと [新しいテーブル] オプションを使用して実行し、DAX 式を入力します。
以下の比較表からわかるように、計算されたテーブルは、物理テーブルまたは仮想テーブルとはプロファイルが大きく異なります。完全に動的ではありません。
新しい情報を取得するには、更新する必要があります。物理ファイルのサイズは増加します。直接の物理テーブルとは異なり、Power Query ではアクセスできません。計算列が Power Query に表示されないのと同じように、計算テーブルも表示されません。ただし、物理テーブルの他の側面も備えています。
通常、計算テーブルはサポート テーブルに使用され、より一般的にはデバッグに使用されます。現在では DAX Studio や表形式エディターなどのより優れたツールがあるため、それほど頻繁には使用されていません。このテーブルはデータ ビューを通じて表示します。
率直に言って、計算列と同様、一般的には避けるべきものです。計算表を使用するよりも優れた方法があります。
そして、メジャーに類似したものは、真の仮想テーブルです。これらは、DAX メジャー コードを通じてメジャーのコンテキストで作成されます。他の 2 種類のテーブルとは異なり、これらは完全に動的です。オンデマンドであるため、ファイル サイズが増加することはありません。メジャーと同様に、仮想テーブルはメモリ内でオンデマンドで計算され、必要なコンテキスト全体にわたってすべて使用されます。
Power Query ではアクセスできません。それらに肉体関係を置くことはできません。を使用して関連付けます。
メジャーはテーブル値を返すことができず、スカラー値を返す必要があるため、仮想テーブルはメジャーの中間計算に使用されます。したがって、通常はこれらを中間計算として使用し、それに基づいてスケーラーを生成します。スケーラーはメジャーの結果として得られます。
これらのテーブルは、DAX Studio、表形式エディター、新しいテーブルなどのツールで視覚化できます。これを削除しない限り、データ モデルが大量の追加テーブルで乱雑になるため、これもおそらく最も望ましくない方法です。
仮想テーブルの DAX 測定ソリューション
Ashton の質問に戻りますが、テーブルを見ると、テーブルが動的であることがわかります。複数の選択を行うこともでき、これはその場で完全に変更されます。そのため、他の 2 つ (物理テーブルと計算テーブル) が完全には動的ではないため、これが仮想テーブルであることがわかります。また、最初に述べたように、それが切断されたテーブルであることもわかっています。
これを解決するために、Rubber Duck のコンセプトを使用しました。前回のチュートリアルでは、特定の DAX について詳しく説明する前に、問題に対する概念的な解決策を開発するラバー ダッキングの概念について説明しました。
それで、ここでのラバーダックソリューションのために私がやったことは、基本的にこの切り離されたスライサーテーブルを組み立てることでした。次に、それらのスライサーの値を収集しました。次に、切断されたテーブルで選択したものを購入したユーザーによってクライアントをフィルタリングする仮想テーブルを考え出しました。
次に、その顧客リストを取得し、それらの顧客によって設定された元のデータをフィルタリングして、スライサー値に加えて、顧客とその顧客による購入を導き出しました。
具体的な対策を見て、これがどのように展開するか、また仮想テーブルを操作する際の考慮事項をいくつか見てみましょう。
最初に行ったのは、私たちの価値観に対する 2 つの収穫基準を開発することでした。最初の値は、切断されたスライサーの値です。
要件に複数選択があったため、だけを使用することはできませんでした。そこで私がやったのは、関数を使用して、切断されたスライサー内の 1 つ以上の選択範囲をキャプチャすることです。クライアントの場合、評価する各行に 1 つのクライアントがあるため、SELECTEDVALUE を使用できます。
次に私が実行したのは、で始まるこの仮想テーブル変数 ( VAR Buyers ) です。次に、切断されたスライサーの値に含まれる果物を購入したかどうかによって、クライアントをフィルタリングします。
これは、DAX クエリを実行することで確認できます。これは、DAX Studio または表形式エディターで行うことができます。ここで仮想テーブル メジャーを取得し、それを表エディタにコピーしましょう。私たちが期待する値 (Joe と Mary) が提供されていることを確認します。
DAX クエリは常にテーブルを返し、常に EVALUATE で始まるため、ここに EVALUATE を追加します。ただし、結果としては何も得られません。これは、選択された切断フルーツ ( SelDisconnFruit ) ハーベスト変数がスライサーを認識していないためです。それは文脈から外れています。
したがって、それをテストする方法は、スライサー値を人為的に設定することです。ここでは SelDisconnFruit を小さなテーブルに置き換えます。波括弧の間に「オレンジ」(スライサーの値)を入力します。そして今、ここで結果が得られます。それはジョーとメアリーです。これにより、仮想テーブルは私たちが想定したとおりに機能するようになりました。
それで、メジャー式に戻ることができます。仮想テーブルの課題の 1 つは、メジャー内に仮想テーブルを簡単に作成できることです。ただし、メジャーの結果として仮想テーブルを返すことはできません。したがって、スカラーを返す必要がありますが、これは仮想テーブルの関連する側面をキャプチャします。
ここには、バリュー スライサーにあるフルーツをどのクライアントが購入したかを示す仮想テーブルがあります。選択したクライアントがその購入者のテーブルに存在する場合、 1 を取得するという別の変数 ( VAR BuyerIn )を設定できます。そうでない場合は、ゼロが返されます。
次に、その結果を取得してフィルター ペインに入力します。私たちが言うところの「主要購入者」の尺度は 1 つで、この場合はオレンジを購入した顧客になります。
そうすることで、元のデータ テーブルをフィルタリングして正しいレコードを絞り込みます。仮想テーブルが作成され、各選択に基づいて適切にフィルタリングが行われることがわかります。
LuckyTemplates の反復関数内の仮想テーブル – DAX の概念
TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する
仮想テーブルで COUNTROWS DAX 関数を使用する方法
結論
これが今日取り上げたかった内容の大部分です。これは非常に単純な仮想テーブルの例ですが、物理テーブル、計算テーブル、仮想テーブルの違いに焦点を当てています。
仮想テーブル、特に仮想テーブルのメジャーのデバッグに関して、再検討すべき興味深い問題がたくさんあります。これについては、今後数週間以内にもう一度取り上げる予定ですが、今のところ、このチュートリアルはこれですべてです。
乾杯!
Python における Self とは: 実際の例
R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。
この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。
このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。
この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。
LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。
LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。
このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。
これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。
LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて