LuckyTemplates の DAX 関数 COLUMNSTATISTICS

LuckyTemplates の DAX 関数 COLUMNSTATISTICS

DAX 関数 COLUMNSTATISTICS() の動的な使用法について引き続き調査していきたいと思います。これは、2021 年 8 月に LuckyTemplates に追加された、ほぼ完全に文書化されていない新しい DAX 関数であり、非常にユニークな側面があり、慣れると非常に興味深いと思います。 。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

私は多くの実験を行い、この関数がどのように機能するか、そしてそれを使って何ができるかについて、非常に興味深い新しいことを学びました。この関数に関する最初のブログで、いくつかの静的な使用方法について説明しました。今日は、IntelliSense ですらまだ最新ではない方法での、関数の非常に驚くべき動的な使用方法について説明します。

目次

DAX 関数 COLUMNSTATISTICS の仕組み

COLUMNSTATISTICS は、データ モデル内のすべてのテーブルとフィールドに対して、テーブル名、列名、列の最小値と最大値、カーディナリティ、および最大長を含む 6 つの追加フィールドからなるテーブルを作成します。これはそれほど多くのデータではないように見えますが、それを使用してできることはたくさんあります。

LuckyTemplates の DAX 関数 COLUMNSTATISTICS

私が現在使用しているデータは、LuckyTemplates 外部ツールの練習データ セットにすぎません。これは、5 つのディメンション テーブル、ファクト テーブル、およびメジャー テーブルを備えた比較的単純なデータ モデルです。このようなモデルを追跡するのはそれほど難しくありませんが、複雑なモデルの場合は、より複雑なデータセットの監視が必要になります。

複雑なデータセットのメタデータは、カーディナリティ (フィールド内の一意の値の数) を確認するという観点から非常に重要になります。これは、モデルのサイズだけでなく、潜在的に処理速度にも大きな影響を与えます。

さらに、モデルを構築するときに、テーブルの数だけでなく、それらのテーブルの日付範囲も把握しておくことが役立ちます。Dates テーブルを構築するときは、ファクト テーブル内のデータの全範囲を確実にカバーするようにします。

そこで、この例では、私が取り組んでいるこのデータ モデルにテーブルを追加してみましょう。Power Query では、[新しいソース][空のクエリ]の順に移動します。次に、詳細エディターに移動し、 List.Datesという関数を貼り付けます。これを使用して、カーディナリティ 10,000 のテーブルを作成します。つまり、10,000 個の一意の日付になります。

10,000 項目のリストが返されるので、それをテーブルに変換し、そのテーブルの名前を変更するだけです。

ここまでのフィールドを変更できます。そして、[閉じて適用] をクリックすると、(以前のように) モデル全体を更新することなく、スマート ナラティブが動的に更新されることがわかります。

これが完全に動的である理由は、すべてをメジャーで実行しているためです。興味深いのは、多くのエラーが表示されることと、この関数が新しいため IntelliSense が適切に検出していないにもかかわらず、実際には機能していることです。

表形式エディター 3 に進みましょう。これは、複雑な DAX メジャーが実際に何を行っているかを理解するのに最適な方法だと思います。

DAX クエリはスケーラーではなくテーブルを返すことに注意してください。したがって、この測定値を取得してDAX クエリにコピーすると、ここでの結果はまだスケーラーであるため、エラーが表示されます。そのRETURN Result をメジャーの個々のコンポーネントに置き換えるデバッグ アプローチを使用できます。

この場合は、これをColStatsに置き換えます。これは、冒頭で COLUMNSTATISTICS DAX 関数を変数に入れただけです。これにより、期待どおりの標準列統計テーブルが得られます。

ここで、テーブル名列だけを見て、そこから個別の値を取り出してカウントしたいと思います。これがデータ モデル内のテーブルの数になります。

まず、ColStats テーブルの列を選択し、そのテーブル名フィールドを返すだけです。通常、DAX メジャーまたは DAX クエリでは、フィールド名の前にテーブル名を付けて返します。ただしこの場合、仮想的にのみ存在するため、適切なテーブル名が何を参照しているのかわかりません。変数名をテーブル名として受け入れることはできないようです。

したがって、この場合は、メジャーのように見えるものをそのまま使用する必要がありますが、実際には、その前にテーブル参照がない列参照です。命名法が混乱しているにもかかわらず、それはまだ機能します。この RETURN ステートメントをTabColに置き換えると、期待どおりのモデル テーブル フィールドが得られます。

そして結果については、テーブルの個別の列のカウントを行っているだけです。したがって、これをDISTINCT(TabsCol)に置き換えると、7 つのテーブルが得られます。

次に、最高のカーディナリティ テーブルの最高のカーディナリティを見て、それらをどのように取得したかを見てみましょう。これは実際には、最大数だけでなく、その数に関連付けられた最大属性など、探しているさまざまなものに使用できる重要なパターンです。

それでは、 MaxCardinalityを見てみましょう。これはスケーラーですが、括弧で囲むだけで 1 セルのテーブルに変えることができます。5 に達すると、それがカーディナリティ値 10,000 であることがわかります。

ここで問題となるのは、これをどのように取得して、そのカーディナリティに関連付けられたテーブルを返すかということです。

を使用する非常に一般的なパターンを使用します。次に、それを RETURN ステートメントにコピーすると、取得を予期していた行、つまり 10,000 Dates 列が得られます。(TOPN であるため) 1 行を取得する代わりに、同点であるため 2 行を取得します。

また、ColStats は、テーブルごとに、テーブルの各行の一意の識別子であるRowNumberと呼ばれる非表示のインデックス行にインデックスを作成します。そのため、MaxCardinality は、一意の識別子の場合、常に RowNumber によってミラーリングされます。

したがって、私たちが見ているのはテーブル名の最大値であるため、行が 2 つあることはあまり重要ではありません。そして、その max は何らかの値を返すためだけに存在します。それ以外の場合、これは単なる裸の列になります。しかし、それを中心に何らかの集計を行う必要があり、この場合はを使用します。

次に、 RETURN ステートメントにMaxCardinality を配置し、それを括弧で囲んでスケーラーではなくテーブルを返すと、Test の値が返されます。

この TOPN DAX パターンは、基本的に最大値または最小値を把握し、その最小値または最大値に関連付けられた属性を返したい場合に覚えておくと非常に良いパターンです。


高度な DAX を使用して LuckyTemplates の数式を最適化する
DAX メジャー分析:
メジャー分岐を使用した LuckyTemplates の長い DAX メジャーの分割

結論

DAX 関数 COLUMNSTATISTICS を動的に最大限に活用するために使用できる一般的なアプローチとコンテキストを説明しました。これを複雑なモデルの観点から動的に追跡できるため、この機能には非常に価値があると思います。

COLUMNSTATISTICS 関数を実験すればするほど、また DAX 内でメタデータを動的に処理できるその機能により、より興味深い用途が見つかると思います。したがって、この DAX 関数の興味深い使用方法をすでに見つけた場合は、以下のコメントで知らせてください。

ではごきげんよう!


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