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 関数の興味深い使用方法をすでに見つけた場合は、以下のコメントで知らせてください。

ではごきげんよう!


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