DAX Studio の VertiPaq アナライザー | LuckyTemplates チュートリアル

DAX Studio の VertiPaq アナライザー | LuckyTemplates チュートリアル

このチュートリアルでは、 DAX Studioの VertiPaq Analyzer メトリクスと、それが DAX コードの最適化にどのように役立つかを紹介します。各メトリクスがコードのパフォーマンスの向上にどのように役立つかを理解できるように、すべてのメトリクスについて説明します。

これは VertiPaq Analyzer メトリクスです。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

目次

VertiPaq Analyzer の [テーブル] タブ

最初のメトリクスは、[テーブル]タブまたは [全体のテーブル ビュー] です。このタブには、 「カーディナリティ」列が表示されます 。これは、テーブル内の一意の値の数を指します。これは、データ モデルとDAX クエリで最も重要な列です。

DimCustomerテーブルを見ると、20 個の一意の値があります。これは、反復しない値を持つ個別の顧客が 20 人いることを意味します。

これはサンプル DAX クエリです。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

関数を使用して、 さまざまなテーブルの行をカウントします。行の数は、テーブル内で生成されるカーディナリティに対応します。

データサイズの列

Cardinalityの次の列はTable と呼ばれます。テーブルがどれだけのメモリを使用しているかを示します。データのサイズが大きくなるほど、より多くの注意が必要になります。Col Size列は、 DataDictionary、およびHierarchy Size列 の合計です。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

Data 、Dictionary、およびHierarchy Size列には、それぞれ圧縮データ、辞書でエンコードされた列、および自動生成された階層列の合計サイズが表示されます。

次は、 使用されるエンコーディングのタイプを示すエンコーディング列です。 すべてのテーブルで とハッシュ エンコーディングが発生しているため、結果に「多」と表示されます。

参照整合性違反は、「RI 違反」列にも表示されます。値がファクトテーブルには存在するが、ディメンションテーブルには存在しない場合、違反が発生します。

「ユーザー階層サイズ」 列には、ユーザー定義の階層のサイズが表示されます。1 対多設定の多側に基づく関係のサイズも、[関係のサイズ]列に表示されます。

次に、 %DB列があります。この列には、テーブルがすべてのテーブルの合計サイズに占める割合が表示されます。

この例では、 DimCustomerテーブルがテーブル全体のサイズのほぼ 66% を占めていることがわかります。ファクトテーブルに対するデータベースの割合は、ディメンションテーブル よりも大きくする必要があります 。

割合は次のとおりです。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

この例には大量のデータがないため、Segments 列 とPartitions 列は使用できません。これは、より大きなテーブルにのみ適用されます。

タブの最後の列はColumnsと呼ばれます。これは、テーブル内に存在する列の数を示すだけです。[データタイプ] 列[% テーブル]列は、全体テーブル ビューには適用されません。

FactSales テーブルの内部

これは全体的な FactSales データ テーブルです。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

テーブルの各列には独自の情報があります。たとえば、全体のテーブル レベルには、CardinalityColumn Sizeなどのさまざまな列があります。

この例では、 SalesKeyのカーディナリティがテーブルのカーディナリティと等しいことがわかります。これは、  SalesKey には繰り返し値がなく、一意の値であるためです。

「列サイズ」列は、表レベルと同様に重要です。DataDictionary、およびHierarchy Size列の合計が表示されます。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

また、使用されているエンコード方法がHash Encodingであることもわかります。これにより、値の個別のリストが作成されます。

Quantity行を見ると、データ型が整数であってもハッシュ エンコーディングメソッドが使用されていることがわかります。

その理由は、SQL Server Analysis Services が最適な圧縮方法を決定する方法を設定しているためです。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

% Table」列には、テーブルの合計サイズに対する列の割合が表示されます。この例では、SalesKeyのテーブル サイズが最大ですが、カーディナリティと列サイズが最も大きいため、これは当然のことです。

同様に、「% Database」 列には、データベース全体に対するテーブルまたはテーブル内の列の割合が表示されます。

FactSalesテーブルがデータ モデルの合計サイズの 46.8% であることがわかります。FactSalesテーブル内の SalesKey 列は、データベース合計サイズの 15% を占めます。

この例には少量のデータしか含まれていないため、セグメントとパーティションは 1 つだけになります。Columns列も同様です。列ビューでは列の数は常に 1 になります。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

VertiPaq Analyzer の [列] タブ

[列]タブ には、データを表示するための簡単な形式があります。[テーブル]タブよりも詳細な情報が表示されます。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

[テーブル]タブと同様の列があることがわかります 。

[列]タブでは、任意の列を並べ替えることができます。この例では、小さな三角形で示されているカーディナリティによってソートされています。「行」 列には、テーブル内の行数が表示されます。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

FactSales-SalesKey には15,000 行とカーディナリティがあることがわかります 。すべての主キーには、対応するカーディナリティと等しい行があります。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

行数がカーディナリティの数と等しくない場合、テーブルには繰り返し値が含まれます。

FactSales-CustomerKeyを見ると、カーディナリティが 801 で、列サイズがほぼ 110 万であることがわかります。

これは、最適化して圧縮する必要があることを意味します。最適化するには、LuckyTemplates ファイルに移動し、DimCustomer テーブルを開きます。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

CustomerKey列文字列型のデータです。値が C で始まり、その後に数字が続くことがわかります。[値の置換]をクリックして、列内の値を変更します。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

値 C を見つけて空白に変更します。次に、データ型を整数に変更します。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

ファクトテーブル のCustomerKey列に対しても同じことを実行します 。[適用] をクリックして DAX Studio に戻ります。次に、[View Metrics] をクリックして DAX を再読み込みし、カーディナリティで並べ替えます。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

列サイズは 110 万から 46,372 に減少しました。テーブル ビューを見ると、列サイズも 46,372 まで減少していることがわかります。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

列サイズがほぼ 110 万ある SalespersonKey に対して同じことを行うと、列サイズを 5,540 まで減らすことができます。

DAX Studio の VertiPaq アナライザー |  LuckyTemplates チュートリアル

文字列またはテキスト型の値を整数型に変更すると、DAX を最適化してパフォーマンスを向上させることができます。


この新しいコースで DAX 関数を最適化する
より最適化されたデータを実現する簡単な LuckyTemplates 変換
高度な DAX を使用して LuckyTemplates 数式を最適化する

結論

DAX の最適化は、VertiPaq Analyzer を使用して DAX Studio で開始されます。アナライザー メトリックでは、テーブルと列がどのように機能するかを確認し、どのエンティティをより最適化および改善する必要があるかを判断します。

コードのどの部分がコードのパフォーマンスを低下させているかを調べたい場合は、VertiPaq Analyzer を使用してください。それは確実にあなたの 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 ゲートウェイとは何ですか? 知っておくべきことすべて