Excel-dax-quick-guide
Excel DAX-概要
DAXは* D ata A nalysis E x * pressionsの略です。 DAXは式言語であり、1つ以上の値を計算して返すために式または式で使用できる関数、演算子、および定数のコレクションです。 DAXは、Excel Power Pivotのデータモデルに関連付けられた式言語です。
これはプログラミング言語ではありませんが、ユーザーが計算列および計算フィールド(メジャーとも呼ばれる)でカスタム計算を定義できる数式言語です。 DAXは、データモデルに既に存在するデータから新しい情報を作成するのに役立ちます。 DAX数式を使用すると、データモデリング、データ分析を実行し、その結果をレポートおよび意思決定に使用できます。
DAXには、Excelの数式で使用される関数の一部が含まれていますが、機能が変更されており、リレーショナルデータを操作して動的集計を実行するように設計された追加の関数があります。
DAXの重要性
DAXの基盤は、ExcelのPower Pivotデータベースであるデータモデルです。 データモデルは、異なるソースからのデータを結合するために、リレーションシップを定義できるテーブルで構成されます。 データモデルへのデータ接続は、ソースデータが変更されたときに更新できます。 Data Modelは、Power Pivot xVelocityのメモリ内分析エンジン(VertiPaq)を使用して、数千行のデータを収容できるだけでなく、データ操作を可能な限り迅速にします。 データモデルの詳細については、チュートリアル-Power Pivotを参照してください。
DAXとData Modelを組み合わせることで、Excelのいくつかのパワー機能(Power Pivot、Power PivotTables、Power PivotCharts、Power View)が有効になります。 DAXを使用して、多くの基本的な計算とデータ分析の問題を解決できます。
DAXは、Power BIで新しいPower BI Desktopファイルを作成し、データをインポートするのにも役立ちます。 さらに、DAXフォーミュラは、製品カテゴリ全体およびさまざまな日付範囲の成長率の分析、市場動向などと比較した前年比成長率の計算などの機能を提供します。
効果的なDAXフォーミュラの作成方法を学ぶことは、データを最大限に活用するのに役立ちます。 必要な情報を入手したら、収益に影響する実際のビジネス上の問題の解決を開始できます。 これがPower BIのパワーであり、DAXはそこに到達するのに役立ちます。
このチュートリアルの前提条件
このチュートリアルは、Excel Power Pivotチュートリアルの拡張機能であり、Power Pivot機能、データモデル、関係、Power PivotTables、Power Pivot Chartsなどについて学習しました。 このチュートリアルはDAX言語に関するものであるため、DAXを掘り下げる前にこのチュートリアルをブラッシュアップすることをお勧めします。このチュートリアルでは、データモデルのデータを分析するための式を作成し、結果を報告します。
このチュートリアルでは、Excel関数に似ていますが、いくつかのバリエーションがあるDAX関数も紹介します。 Excel関数とDAX関数の比較は、両方を区別するために提供されています。 同様に、Excelの数式とDAXの数式が比較され、類似点と相違点が説明されています。 これらの違いをよく理解しておくと、効果的なDAX数式を効率的に作成するのに役立ちます。
DAXはPower Pivotウィンドウのデータモデル専用であるため、このチュートリアルではExcel関数とExcel数式の知識は必要ありません。 データモデルに基づくPower PivotTables、Power Pivot Charts、およびPower Viewビジュアライゼーションを表示するためだけに、Excelワークシートにアクセスします。 ただし、Excelの関数と数式に関する十分な知識を持つExcelの専門家である場合は、前のセクションで言及されていることと、このチュートリアルのコースで与えられた詳細をメモしてください。
計算列
計算列は、DAX数式を使用して、データモデルのテーブルに追加できる列です。 Excel Power Pivotチュートリアルでそれらについて既に学習しましたが、DAXは計算列、計算フィールド、およびDAX関数に関するすべてであるため、「計算列」の章で詳細を学習します。
計算フィールド/メジャー
データモデルのテーブルの値を編集して変更することはできません。 ただし、Power PivotTablesで使用できるテーブルに計算フィールドを追加できます。 計算フィールドは、名前を指定し、DAX式を定義することにより定義されます。 詳細については、章– link:/excel_dax/excel_dax_calculated_fields_measures [Calculated Fields]を参照してください。
計算フィールドは、Excel 2013より前のExcelバージョンではメジャーとして名前が付けられていました。 Excel 2016のメジャーに名前が変更されました。 このチュートリアルでは、それらを計算フィールドと呼びます。 ただし、計算フィールドとメジャーという用語は同義語であり、すべての面で同じことを指していることに注意してください。
計算フィールドは、定義して保存した後に編集できます。 定義で使用されるDAX数式を変更するか、計算フィールドの名前を変更できます。 これについては、この章で学習します– link:/excel_dax/excel_dax_editing_calculated_field [計算フィールドの編集]。 計算フィールドを削除できます。 次の章を参照してください– link:/excel_dax/excel_dax_deleting_calculated_field [計算フィールドの削除]。
DAXフォーミュラ
DAX数式は、DAX言語の中心を形成します。 DAX数式で定義することにより、計算フィールドと計算列を作成できます。 データ分析操作用のDAX式を作成できます。 DAXの数式は、テーブル内の個々のセルやセル範囲を参照するのではなく、データモデルのテーブルと列を参照します。 データモデルのテーブルの列には、同じデータ型が含まれている必要があります。
DAX数式には、テーブル、列、計算列、計算フィールド、DAX演算子、およびDAX関数が含まれます。 詳細については、章– link:/excel_dax/excel_dax_formulas [DAX Formulas]を参照してください。
DAX構文
すべての言語DAXの場合と同様に、式言語にも構文があります。 DAXの式はDAX構文に従う必要があります。そうでない場合は、設計時または実行時にエラーが発生するか、誤った結果が返されます。
この章では次のことを学びます–リンク:/excel_dax/excel_dax_syntax [DAX Syntax]-
- テーブル、列のDAX命名要件
- DAXオペレーター
- DAXの特別な値
- DAXデータ型
- DAXの暗黙的なデータ型変換
DAXオペレーター
DAXは式言語であるため、式の定義に演算子を使用します。 DAXには次の種類の演算子があります-
- DAX算術演算子
- DAX比較演算子
- DAXテキスト連結演算子
- DAX論理演算子
DAX演算子の優先順位も定義されており、Excel演算子の優先順位とは異なります。 次の章を参照してください– link:/excel_dax/excel_dax_operators [DAX演算子]。
DAX標準パラメーター
DAX関数の構文には、パラメーターに関する特定の要件があります。 これは、DAX関数の引数がテーブルまたは列、計算フィールド、または他のDAX関数である可能性があるためです。 章-link:/excel_dax/excel_dax_standard_parameters [DAX標準パラメーター]を参照してください。
DAX関数
Excel 2013には、DAX数式で使用できる246個のDAX関数があります。 これらの関数については、「* DAX関数*」の章でカテゴリレベルで学習します。 ただし、各DAX関数の構文、パラメーター、使用法、戻り値の詳細については、-link:/excel_dax/excel_dax_functions [DAX関数]のチュートリアルを参照する必要があります。 各DAX関数の説明に使用されるセクション名は、章– link:/excel_dax/understanding_dax_functions [Understanding DAX Functions]に記載されています。
DAX関数を書くにはDAX関数が必要であり、使用されるDAX関数の結果は使用されるコンテキストに依存するため、データで使用するDAXを把握するには、これらの2つのチュートリアルを行き来する必要があります。 DAXおよびPower BIを使用したモデリング。
DAX特殊関数
DAXには、DAXを強力にするいくつかの機能があります。 これらのDAX関数は、DAXタイムインテリジェンス関数とDAXフィルター関数のカテゴリに分類され、特別な言及が必要です。 この章では、DAXタイムインテリジェンス関数について学習します– link:/excel_dax/excel_dax_time_intelligence [DAXタイムインテリジェンスについて]。 この章では、DAXフィルター関数の使用法について学習します– link:/excel_dax/excel_dax_filter_functions [DAXフィルター関数]。
DAX評価コンテキスト
DAX数式の結果は、評価に使用されるコンテキストに応じて異なる場合があります。 DAXには、行コンテキストとフィルターコンテキストの2種類の評価コンテキストがあります。 次の章を参照してください-link:/excel_dax/excel_dax_evaluation_context [DAX Evaluation Context]。
DAXフォーミュラ
DAXは数式言語であり、DAX数式を作成する際に最大限に活用する必要があります。 数式の構文とそれらを簡単かつ正確に作成する方法については、「DAX数式」の章を参照してください。
DAX数式の結果は、データが更新されるたび、およびDAX数式が再計算されるたびに変わります。 データの更新と再計算の違いを理解する必要があります。 章-link:/excel_dax/updating_results_of_dax_formulas [DAX数式の結果の更新]を参照してください。
データモデルのデータは予期されており、随時変更される可能性があります。 これは、データがいつでも最新のデータを必要とするデータ分析アクティビティに使用されるためです。 データを更新するさまざまな方法を理解するには、「link:/excel_dax/excel_dax_updating_data_in_data_model [Data Model in Data in Data Model]」の章を参照してください。
この章では、DAX式の再計算のさまざまな種類について説明します-link:/excel_dax/excel_dax_recalculating_dax_formulas [DAX式の再計算]。
DAX数式の再計算では、データの依存関係を考慮し、特定の順序に従う必要があります。 そうしないと、エラーまたは誤った結果が表示される場合があります。 詳細については、章「link:/excel_dax/troubleshooting_dax_formula_recalculation [DAX数式再計算のトラブルシューティング]」を参照してください。
一般的なDAX数式エラーのいくつかについての洞察が得られ、それらのエラーを修正する方法について、章-link:/excel_dax/excel_dax_formula_errors [DAX数式エラー]で学習します。
DAXシナリオ
新しい言語の学習を開始する場合、その言語に慣れる最良の方法は、どこで何を使用するかを理解することです。 同様に、DAXはデータ分析を目的とした式言語であるため、使用できるさまざまなシナリオを理解する必要があります。
詳細については、次の章を参照してください。
- リンク:/excel_dax/excel_dax_scenarios [DAXシナリオ]
- シナリオ-リンク:/excel_dax/excel_dax_performing_complex_calculations [複雑な計算の実行]
- シナリオ-リンク:/excel_dax/excel_dax_working_with_text_and_dates [テキストと日付の操作]
- シナリオ-リンク:/excel_dax/excel_dax_conditional_values_and_testing_for_errors [条件値とエラーのテスト]
- シナリオ-リンク:/excel_dax/excel_dax_using_time_intelligence [タイムインテリジェンスの使用]
- シナリオ-リンク:/excel_dax/excel_dax_ranking_and_comparing_values [ランキングと値の比較]
Excel DAX-計算列
- 計算列*は、列値を定義するDAX式を使用して、ワークブックのデータモデルの既存のテーブルに追加する列です。 列の値をインポートする代わりに、計算列を作成します。
他のテーブル列と同様に、ピボットテーブル、ピボットグラフ、パワーピボットテーブル、パワーピボットグラフ、またはパワービューレポートで計算列を使用できます。
計算列について
計算列の作成に使用されるDAX数式は、Excelの数式に似ています。 ただし、DAX数式では、テーブル内の行ごとに異なる数式を作成することはできません。 DAX数式は、列全体に自動的に適用されます。
たとえば、1つの計算列を作成して、既存の列から年を抽出することができます-日付、DAXの式で-
YEARはDAX関数であり、Dateはテーブル内の既存の列です。 ご覧のように、テーブル名は括弧で囲まれています。 これについては、この章で詳しく説明します– link:/excel_dax/excel_dax_syntax [DAX構文]。
このDAX数式を使用してテーブルに列を追加すると、数式を作成するとすぐに列の値が計算されます。 年の値で満たされたヘッダーCalculatedColumn1を持つ新しい列が作成されます。
列の値は、基になるデータが更新されるときなど、必要に応じて再計算されます。 既存の列、計算フィールド(メジャー)、およびその他の計算列に基づいて計算列を作成できます。
計算列の作成
次のスクリーンショットに示すように、オリンピック結果のデータモデルを検討してください。
- データビューをクリックします。
- [結果]タブをクリックします。
結果テーブルが表示されます。
上のスクリーンショットに見られるように、右端の列にはヘッダーがあります-列の追加。
- リボンの[デザイン]タブをクリックします。
- [列]グループの[追加]をクリックします。
ポインターが数式バーに表示されます。 つまり、DAX数式を含む列を追加していることになります。
- 数式バーに「= YEAR([日付])」と入力します。
上記のスクリーンショットに見られるように、ヘッダーのある右端の列–列の追加が強調表示されています。
- Enterを押します。
計算が完了するまでに少し(数秒)かかります。 お待ちください。
新しい計算列は、右端の[列の追加]の左側に挿入されます。
上記のスクリーンショットに示すように、新しく挿入された計算列が強調表示されます。 列全体の値は、使用されているDAX式に従って表示されます。 列ヘッダーはCalculatedColumn1です。
計算列の名前を変更する
計算列の名前を意味のある名前に変更するには、次のようにします-
- 列ヘッダーをダブルクリックします。 列名が強調表示されます。
- 列名を選択します。
- 年(新しい名前)と入力します。
上記のスクリーンショットに見られるように、計算列の名前が変更されました。
列を右クリックしてドロップダウンリストの[名前の変更]をクリックすることにより、計算列の名前を変更することもできます。
新しい名前がテーブル内の既存の名前と競合しないことを確認してください。
計算列のデータ型の確認
次のように計算列のデータ型を確認できます-
- リボンの[ホーム]タブをクリックします。
- データ型をクリックします。
上記のスクリーンショットを見るとわかるように、ドロップダウンリストには列に使用できるデータ型があります。 この例では、デフォルト(自動)データ型、つまり 整数が選択されます。
計算列のエラー
エラーは、次の理由で計算列で発生する可能性があります-
- テーブル間の関係の変更または削除。 これは、これらのテーブルの列を使用する数式が無効になるためです。
- 式には、循環または自己参照の依存関係が含まれています。
パフォーマンスの問題
前にオリンピックの結果の例で見たように、結果テーブルには約35000行のデータがあります。 したがって、DAX数式を使用して列を作成すると、すべての35000+列の値を一度に取得しますが、少し時間がかかりました。 データモデルとテーブルは、数百万行のデータを処理するためのものです。 したがって、DAX数式の参照が多すぎる場合、パフォーマンスに影響する可能性があります。 次のことを行うことでパフォーマンスの問題を回避できます-
- DAX数式に多くの複雑な依存関係が含まれている場合、一度に1つの大きな数式を作成するのではなく、新しい計算列に結果を保存する手順で作成します。 これにより、結果を検証し、パフォーマンスを評価できます。
- データの変更が発生した場合、計算列を再計算する必要があります。 再計算モードを手動に設定して、頻繁な再計算を節約できます。 ただし、計算列の値が正しくない場合、データを更新して再計算するまで、列はグレー表示されます。
Excel DAX-計算フィールド/メジャー
データモデルのテーブル内の*計算フィールド*は、DAX数式によって取得されたフィールドです。 Power Pivotの以前のバージョンでは、計算フィールドはメジャーと呼ばれていました。 Excel 2013では、計算フィールドとして名前が変更されました。 ただし、Excel 2016で測定するために名前が変更されています。 ドキュメントを参照すると、これら2つの用語の混同が見られます。 計算フィールドとメジャーという用語は同義語であることに注意してください。 このチュートリアルでは、計算フィールドという用語を使用します。
計算フィールドについて
計算フィールドは、ピボットテーブル(またはピボットグラフ)で使用するために特別に作成された数式です。
COUNTやSUMなどの標準的な集計関数に基づいて、または独自のDAX数式を定義して、計算フィールドを作成できます。
以下は、計算フィールドと計算列の違いです-
- 計算フィールドは、ピボットテーブルのVALUESエリアでのみ使用できます。
- 計算結果を含む計算列は、ROWS、COLUMNS、およびFILTERSエリアでも使用できます。
計算フィールドの保存
計算フィールドは、データモデルにソーステーブルとともに保存されます。 テーブルのフィールドとして、Power PivotTableまたはPower PivotChart Fieldsリストに表示されます。
計算フィールドの使用
計算フィールドを使用するには、[PowerPivotTable Fields]リストから選択する必要があります。 計算フィールドがVALUES領域に追加され、計算フィールドに使用される式が評価されます。 結果は、行フィールドと列フィールドの組み合わせごとに作成されます。
計算フィールド-例
オリンピックデータの次のデータモデルを考慮してください-
上記のスクリーンショットに見られるように、結果テーブルには、スポーツ-イベント-国-日付の組み合わせを含む各行の値-ゴールド、シルバー、またはブロンズを含むフィールドメダルがあります。 各国のメダル数が必要な場合、次のDAX式を使用して計算フィールドメダル数を作成できます-
テーブルに計算フィールドを作成する
結果テーブルに計算フィールドのメダル数を作成するには、次の操作を行います-
- [結果]テーブルの[メダル]列の下にある計算領域のセルをクリックします。 セルが強調表示されます。
- 数式バーにMedal Count:= COUNTA([Medal])と入力します。
Enterを押します。
上記のスクリーンショットにあるように、選択したセルに計算フィールドが表示され、値が34,094として表示されます。 この数は、結果テーブルの行の総数です。 したがって、最初はあまり意味がありません。 前に説明したように、計算フィールドの実際の使用は、Power PivotTableまたはPower PivotChartに追加することによってのみ確認できます。
パワーピボットテーブルでの計算フィールドの使用
計算フィールドを使用して、各国のメダルの数を数えるには、次のようにします-
- [Power Pivot]ウィンドウでリボンのピボットテーブルをクリックします。
- ドロップダウンリストでピボットテーブルをクリックします。
[ピボットテーブルの作成]ダイアログボックスが表示されます。
- 既存のワークシートをクリックします。
- ピボットテーブルを配置する場所を選択します。
空のピボットテーブルが作成されます。
- [ピボットテーブルフィールド]リストで[結果]テーブルをクリックします。
- フィールドをクリックします-国とメダル数。
ご覧のとおり、メダル数はVALUESエリアに追加され、国はROWSエリアに追加されます。 ピボットテーブルが作成され、フィールドに国の値が行に表示されます。 また、各行について、メダル数の値が計算されて表示されます。 これが、計算フィールドが使用されるDAX数式を評価し、値を表示する方法です。
- 結果テーブルのフィールドSportをROWSエリアに追加します。
上記のスクリーンショットを見るとわかるように、メダル数は、国ごとに計算されます-スポーツごと、および国自体の小計です。
これが、DAXがPower機能を補完する方法です。
計算フィールドのタイプ
計算フィールドには、暗黙的と明示的の2つのタイプがあります。
- *暗黙的な計算フィールド*は、PowerPivotTable Fieldsリストペインに作成されます。
- *明示的な計算フィールド*は、Power Pivotウィンドウのテーブル、またはExcelウィンドウのPowerPivotリボンから作成されます。
暗黙的な計算フィールドの作成
暗黙的な計算フィールドは、2つの方法で作成できます。どちらもPower PivotTable Fieldsペインで作成できます。
ピボットテーブルフィールドリストでの暗黙的な計算フィールドの作成
次のように、ピボットテーブルフィールドリストのメダルフィールドからメダルフィールドのカウントを作成できます-
- [メダル数]フィールドの選択を解除します。
- [メダル]フィールドを右クリックします。
- ドロップダウンリストで[値に追加]をクリックします。
[値]領域にメダルの数が表示されます。 メダル数の列がピボットテーブルに追加されます。
VALUESエリアでの暗黙的な計算フィールドの作成
暗黙的な計算フィールド-値領域の親行の割合を作成して、国が獲得した各スポーツのメダル数を、その国が獲得したメダルの総数に対する割合として表すことができます。
- [VALUES]領域の[Count of Medal]ボックスの下矢印をクリックします。
- ドロップダウンリストの[値フィールドの設定]をクリックします。
[値フィールドの設定]ダイアログボックスが表示されます。
- [カスタム名]ボックスに%メダルと入力します。
- [値を表示]タブをクリックします。
- [値を表示]の下のボックスをクリックします。
- 親行合計の%をクリックします。
- [数値形式]ボタンをクリックします。
[セルの書式設定]ダイアログボックスが表示されます。
- パーセンテージをクリックします。
- 小数点以下の桁に0を入力します。
- OKをクリックしてください。
- [値フィールドの設定]ダイアログボックスで[OK]をクリックします。
- [小計を表示しない]を選択します。
別の暗黙的な計算フィールド%メダルを作成しました。観察できるように、国ごとにスポーツに関するメダルの割合が表示されます。
暗黙的な計算フィールドの欠点
暗黙的な計算フィールドは簡単に作成できます。 実際、Excelのピボットテーブルやピボットグラフでも作成されています。 しかし、彼らには次の欠点があります-
- これらは揮発性です。 つまり、計算フィールドに使用したフィールドの選択を解除すると、そのフィールドは削除されます。 再度表示する場合は、もう一度作成する必要があります。
- それらのスコープは、作成されたピボットテーブルまたはピボットグラフに限定されます。 別のワークシートに別のピボットテーブルを作成する場合は、計算フィールドを再度作成する必要があります。
一方、明示的な計算フィールドはテーブルとともに保存され、そのテーブルを選択するたびに使用可能になります。
明示的な計算フィールドの作成
あなたは2つの方法で明示的な計算フィールドを作成することができます-
- データモデルのテーブルの計算領域。 これについては、「テーブルでの計算フィールドの作成」セクションで既に学習しています。
- ExcelテーブルのPowerPivotリボンから。 次のセクションで、明示的な計算フィールドを作成するこの方法を学習します。
PowerPivotリボンから明示的な計算フィールドを作成する
PowerPivotリボンから明示的な計算フィールドを作成するには、次のようにします-
- ブックのリボンの[POWERPIVOT]タブをクリックします。
- [計算]領域で[計算フィールド]をクリックします。
- ドロップダウンリストで[新しい計算フィールド]をクリックします。
[計算フィールド]ダイアログボックスが表示されます。
- 次のスクリーンショットに示すように、必要な情報を入力します。
[計算フィールドダイアログボックス]
- [式の確認]ボタンをクリックします。
- 数式にエラーがない場合にのみ、[OK]をクリックします。
ご覧のとおり、このダイアログボックスで計算フィールドのカテゴリと形式を定義できます。 さらに、IntelliSense機能を使用して関数の使用方法を理解し、オートコンプリート機能を使用して関数、テーブル、および列の名前を簡単に完成させることができます。 IntelliSense機能の詳細については、章– link:/excel_dax/excel_dax_formulas [DAX Formulas]を参照してください。
これは、明示的な計算フィールドを作成するための推奨される方法です。
Excel DAX-計算フィールドの編集
計算フィールドを編集して変更できます。 ただし、計算フィールドを編集する前に、保存場所を知っておく必要があります。 つまり、計算されたフィールドはどのテーブルに格納されます。 これは、暗黙的および明示的な計算フィールドの両方に当てはまります。 計算フィールドは、データモデル内の1つのテーブルにのみ関連付けることができます。
計算フィールドの検索
データモデルの計算フィールドを見つけるには、次のことを行います-
- Power Pivotウィンドウのリボンの[詳細設定]タブをクリックします。
- [暗黙的な計算フィールドを表示]をクリックします。
- ダイアグラムビューをクリックします。
上のスクリーンショットでわかるように、[暗黙的な計算フィールドの表示]がリボンで強調表示されています。 強調表示されていない場合は、もう一度クリックします。
また、列、計算フィールド、階層、およびKPIの4つのチェックボックスがあることも確認できます。 デフォルトでは、4つすべてが選択されています。
- ボックス、列、階層、およびKPIのチェックを外します。
これにより、[計算フィールド]ボックスのみがチェックされたままになります。
上記のスクリーンショットに見られるように、結果テーブルのみにフィールドが表示されています。 他の2つのテーブルは空白です。 これは、結果テーブルにのみ計算フィールドがあることを示しています。 また、暗黙の計算フィールドにはアイコン画像があります:/excel_dax/images/implicit_calculated_fields_icon.jpg [Implicit Calculated Fields Icon]が表示されますが、明示的な計算フィールド– Medal Countにはアイコンがありません。
テーブルの計算フィールドの表示
次のように表の計算フィールドを表示できます-
- 計算フィールドをクリックします。
- 右クリックして、ドロップダウンリストで[ジャンプ]を選択します。
テーブルがデータビューに表示されます。
上記のスクリーンショットに見られるように、計算フィールドはテーブルの計算領域に表示されます。
テーブル内の計算フィールドの変更
テーブルの計算フィールドに使用される式を変更できます。
- データモデルのデータビューでテーブルの計算フィールドをクリックします。
- 数式バーで数式を選択します–:=の右側。
数式が強調表示されます。
- 新しい数式を入力します。
- Enterを押します。
DAXの式については、後続の章で詳しく説明します。
データモデルの計算フィールドの名前を変更する
データビューまたはダイアグラムビューのいずれかで、データテーブルの計算フィールドの名前を変更できます。
データビューの計算フィールドの名前を変更する
- データモデルのデータビューでテーブルの計算フィールドをクリックします。
- 数式バーで計算フィールド名を選択します–:=の左側。
計算フィールド名が強調表示されます。
- 計算フィールドの新しい名前を入力します。
- Enterを押します。
DAX構文の詳細については、後続の章で説明します。
ダイアグラムビューの計算フィールドの名前の変更
- ダイアグラムビューのテーブルで計算フィールド名を右クリックします。
- ドロップダウンリストで[名前の変更]をクリックします。
名前は編集モードになります。 計算フィールドの新しい名前を入力します。
Excelウィンドウで計算フィールドを表示する
次のように、Excelウィンドウで計算フィールドを表示できます-
- リボンの[POWERPIVOT]タブをクリックします。
- [計算]グループの[計算フィールド]をクリックします。
- ドロップダウンリストで[計算フィールドの管理]をクリックします。
[計算フィールドの管理]ダイアログボックスが表示されます。 データモデルの明示的な計算フィールドの名前がダイアログボックスに表示されます。
計算フィールドの管理ダイアログボックス
計算フィールドの管理での計算フィールドの変更
[計算フィールドの管理]ダイアログボックスで計算フィールドを変更できます。
- メダル数をクリックします。
- [編集]ボタンをクリックします。
[計算フィールド]ダイアログボックスが表示されます。
- 数式ボックスで=の右側の数式を選択します。
[計算フィールドダイアログボックスが表示されます]
- 新しい数式を入力します。
- OKをクリックしてください。
- [計算フィールドの管理]ダイアログボックスで[閉じる]をクリックします。
計算フィールドの管理で計算フィールドの名前を変更する
[計算フィールドの管理]ダイアログボックスで計算フィールドの名前を変更できます。
- メダル数をクリックします。
- [編集]ボタンをクリックします。
[計算フィールド]ダイアログボックスが表示されます。
- [計算フィールド名]ボックスで名前を選択します。
- 計算フィールドの新しい名前を入力します。
- OKをクリックしてください。
- [計算フィールドの管理]ダイアログボックスで[閉じる]をクリックします。
データモデルの計算フィールドの移動
計算フィールドは、作成されたテーブルの計算領域内で移動できます。 ただし、別のテーブルに移動することはできません。
- 計算フィールドを右クリックします。
- 切り取りをクリックします。
- 同じテーブルの計算領域の別の場所にポインタを移動します。
- 貼り付けをクリックします。
注-計算フィールドのDAX式のデータ参照は列名によるものであり、明示的に記述されているため、計算フィールドがテーブルの計算領域内のどこにあるかは実際には関係ありません。
Excel DAX-計算フィールドの削除
明示的な計算フィールドと暗黙的な計算フィールドの両方を削除できます。 その方法はいくつかありますが、この章で学習します。
ただし、計算フィールドを削除する前に、次の点を覚えておく必要があります-
- 明示的な計算フィールドは、複数のピボットテーブルやピボットグラフで使用できます。 したがって、明示的な計算フィールドを削除しても、すでに生成したレポートに影響しないことを確認する必要があります。
- 明示的な計算フィールドは、他の明示的な計算フィールドの計算に使用できます。 したがって、明示的な計算フィールドが他の明示的な計算フィールドの計算で使用されないことを確認する必要があります。
- 暗黙的な計算フィールドは、使用されるピボットテーブルまたはピボットグラフに制限されます。 したがって、暗黙的な計算フィールドを削除する前に、対応するピボットテーブルまたはピボットグラフから削除できることを確認するだけで十分です。
- 暗黙的な計算フィールドの作成は、明示的な計算フィールドの作成よりも簡単です。 したがって、明示的な計算フィールドを削除する前に、さらに注意が必要です。
- 名前が暗黙的な計算フィールドの名前と競合する場合、明示的な計算フィールドを作成できません。 したがって、明示的な計算フィールドを作成する前に、その暗黙的な計算フィールドを削除する必要がある場合があります。
データモデルの明示的な計算フィールドの削除
データモデルまたはデータモデルのダイアグラムビューで、明示的な計算フィールドを削除できます。
データビューでの明示的な計算フィールドの削除
- データビューの計算領域で計算フィールドを見つけます。
- 計算フィールドを右クリックします。
- ドロップダウンリストで[削除]をクリックします。
削除確認のメッセージが表示されます。
[モデルから削除]をクリックします。 明示的な計算フィールドは削除されます。
ダイアグラムビューでの明示的な計算フィールドの削除
- ダイアグラムビューのデータテーブルで計算フィールドを見つけます。
- 計算フィールド名を右クリックします。
- ドロップダウンリストで[削除]をクリックします。
削除確認のメッセージが表示されます。
[モデルから削除]をクリックします。 明示的な計算フィールドは削除され、データテーブルのフィールドリストには表示されません。
Excelウィンドウでの明示的な計算フィールドの削除
次のように、Excelウィンドウから明示的な計算フィールドを削除できます-
- リボンの[POWERPIVOT]タブをクリックします。
- [計算]グループの[計算フィールド]をクリックします。
- ドロップダウンリストで[計算フィールドの管理]をクリックします。
[計算フィールドの管理]ダイアログボックスが表示されます。
- 明示的な計算フィールド名をクリックします。
- [削除]ボタンをクリックします。
削除の確認メッセージが表示されます。
- はいをクリックします。 データモデルが変更されたという情報メッセージが上部に表示されます。
- ダイアログボックスの[閉じる]ボタンをクリックします。
明示的な計算フィールドは削除され、ワークブックのピボットテーブル/ピボットグラフフィールドリストには表示されません。
暗黙的な計算フィールドの削除
データモデルのデータビューまたはダイアグラムビューで、暗黙的な計算フィールドを削除できます。
データビューでの暗黙的な計算フィールドの削除
- データビューの計算領域で計算フィールドを見つけます。
- 計算フィールドを右クリックします。
- ドロップダウンリストで[削除]をクリックします。
削除確認のメッセージが表示されます。
- [モデルから削除]をクリックします。 暗黙的な計算フィールドは削除されます。
ダイアグラムビューでの暗黙的な計算フィールドの削除
- ダイアグラムビューのデータテーブルで計算フィールドを見つけます。
- 計算フィールド名を右クリックします。
- ドロップダウンリストで[削除]をクリックします。
削除確認のメッセージが表示されます。
[モデルから削除]をクリックします。 暗黙的な計算フィールドは削除され、データテーブルのフィールドリストには表示されません。
Excel DAX-構文
前述のように、DAXは演算子、値、関数、および数式で構成される数式言語です。 この章では、DAX構文について学習します。
- DAX構文*は次のように分類できます-
- リンク:/excel_dax/excel_dax_syntax_for_dax_formulas [DAX数式の構文]
- リンク:/excel_dax/excel_dax_naming_requirements [DAX命名要件]
- リンク:/excel_dax/excel_dax_special_values [DAX特別値]
- リンク:/excel_dax/excel_dax_function [DAX関数]
- リンク:/excel_dax/excel_dax_operator [DAX演算子]
- リンク:/excel_dax/excel_dax_data_types [DAXデータ型]
DAX構文の学習に進む前に、Excelの数式とDAXの数式の違いを理解する必要があります。
Excelの数式とDAXの数式の違い
DAXの数式はExcelの数式に似ており、数式バーに入力できます。 ただし、この2つの間には重大な違いがいくつかあります。
Excel Formula | DAX Formula |
---|---|
Excel formulas are typed in the formula bar in the Excel window. | DAX formulas are typed in the formula bar in the Power Pivot window. |
In Excel formulas, you can reference individual cells or arrays for data. |
In DAX formulas, you can reference only complete tables or columns of data, i.e. references can be only to tables and fields in the tables. ただし、列データの一部のみで計算を実行する必要がある場合は、計算に必要な一意のデータ値をフィルター処理して提供するDAX関数を使用して実行できます。 |
Excel formulas support certain data types. | DAX provides more data types than Excel does. Hence, DAX formulas can use the additional data types also. |
Excel does not support any implicit data conversions. | DAX performs implicit data type conversions during calculations. |
Excel DAX-演算子
DAXは、1つ以上の値を計算して返すために、数式または式で使用できる関数、演算子、および値で構成される数式言語です。
- DAX演算子*を使用して、値を比較し、算術計算を実行し、文字列を連結できます。 この章では、DAX演算子とその使用方法について学習します。
DAX演算子の種類
DAXは、次の種類の演算子をサポートしています-
- リンク:/excel_dax/excel_dax_arithmetic_operators [DAX算術演算子]
- リンク:/excel_dax/excel_dax_comparison_operators [DAX比較演算子]
- リンク:/excel_dax/excel_dax_text_concatenation_operator [DAXテキスト連結演算子]
- リンク:/excel_dax/excel_dax_logical_operators [DAX論理演算子]
DAXオペレーターの優先順位
複数の値または式を組み合わせた多くのDAX演算子を持つDAX数式を作成できます。 このような場合、最終結果は操作が実行される順序に依存します。 DAXは、デフォルトの演算子優先順位と、デフォルトの優先順位をオーバーライドする方法を提供します。
次の表に、DAXの既定の演算子の優先順位を示します。
Precedence Order | Operator(s) | Operation |
---|---|---|
1 | ^ | Exponentiation |
2 | – | Sign |
3 | * and/ | Multiplication and Division |
4 | ! | NOT |
5 | + and – | Addition and Subtraction |
6 | & | Concatenation |
7 | =, <, >, ⇐, >= and <> | Equal to, Less than, Greater than, Less than or equal to, Greater than or equal to and Not equal to |
DAX式の構文
最初に、DAX式の構文と、オペランドと演算子を使用して式の評価が行われる方法を理解する必要があります。
- すべての式は常に等号(=)で始まります。 等号は、後続の文字が式を構成することを示します。 *等号の右側に、DAX演算子で接続されたオペランドがあります。 たとえば、= 5 + 4> 5。
5* 6-3。
- 式は常に左から右に読み取られ、前のセクションで指定されたDAX演算子の優先順位に基づいて、その順序で計算が行われます。 DAX演算子の優先順位値が等しい場合、左から右に評価されます。 たとえば、= 5 6/10。 *と/の両方は、前の順序と同じです。 したがって、式は30/10 = 3として評価されます。
- 式内のDAX演算子の優先順位の値が異なる場合、左から右への優先順位で評価されます。
- = 5 + 4> 7。 デフォルトの優先順位は、+ firstおよび> nextです。 したがって、式は左から右に計算されます。 -5 + 4が最初に計算されて9になり、次に9> 5が評価されてTRUEになります。 = 5 6-3。 デフォルトの優先順位は、 firstおよび-nextです。 したがって、式は左から右に計算されます。 -5 6が最初に計算されて30になり、次に30-3が計算されて27になります。 = 2 5-6 * 3。 デフォルトの優先順位は、*最初、*次、-です。 したがって、式は10 – 18として評価され、その後-8として評価されます。 10-6ではなく、4と4 *3の12であることに注意してください。
括弧を使用してDAXの計算順序を制御する
括弧を使用し、オペランドと演算子をグループ化して計算順序を制御することにより、DAXのデフォルトの演算子の優先順位を変更できます。
たとえば、= 5* 6-3は、DAXのデフォルトの演算子の優先順位で27と評価されます。 括弧を使用してオペランドと演算子を= 5 *(6-3)としてグループ化すると、6-3が最初に計算され、3になり、5 *3が計算されて15になります。
2* 5-6 3は、DAXのデフォルトの演算子優先順位で-8と評価されます。 括弧を使用してオペランドと演算子を= 2 (5-6) 3としてグループ化すると、5-6が最初に計算されて-1になり、次に2 (-1)* 3が計算されて-6になります。
ご覧のとおり、同じオペランドと演算子を使用すると、グループ化する方法によって異なる結果が得られます。 したがって、DAX数式でDAX演算子を使用するときは、計算シーケンスがどのようになるかに注意を払う必要があります。
ExcelとDAXの違い
DAXはExcelの数式と類似していますが、2つの間には大きな違いがあります。
- DAXは、基になるメモリ常駐計算エンジンのため、Excelよりも強力です。
- DAXは、Excelよりも多くのデータ型をサポートしています。
- DAXは、リレーショナルデータベースであるData Modelの追加の高度な機能を提供します。これには、日付型と時刻型の豊富なサポートが含まれます。
場合によっては、DAXの計算結果または関数の動作がExcelと同じでない場合があります。 これは、次の違いによるものです-
- データ型のキャスト *データ型
データ型のキャストの違い
DAXでは、式= value1演算子value2がある場合、2つのオペランドvalue1とvalue2は同じデータ型である必要があります。 データ型が異なる場合、DAXはそれらを最初に暗黙的に共通のデータ型に変換します。 詳細については、「DAX構文」の章を参照してください。
たとえば、異なるデータ型の2つのオペランド、たとえば= [Amount]* 0.08などの数式の結果の数値と整数を比較する必要があります。 最初の数値は小数点以下の桁数が多い10進数にすることができますが、2番目の数値は整数です。 その後、DAXは次のようにそれを処理します-
- まず、DAXは両方の種類の数値を格納できる最大の数値形式を使用して、両方のオペランドを実数に変換します。
- 次に、DAXは2つの実数を比較します。
対照的に、Excelは、最初に共通のデータ型に強制することなく、異なるデータ型の値を比較しようとします。 このため、同じ比較式に対してDAXとExcelで異なる結果が見つかる場合があります。
データ型の違い
DAXとExcelの演算子の優先順位は同じです。 ただし、Excelがサポートする演算子の割合(%)とデータ範囲は、DAXではサポートされていません。 さらに、DAXはデータ型としてテーブルをサポートしますが、Excelの場合はそうではありません。
さらに、Excelの数式では、単一のセル、または配列またはセルの範囲を参照できます。 DAX数式では、これらのいずれも参照できません。 データへのDAX数式参照は、テーブル、列、計算フィールド、および計算列によるものでなければなりません。
Excelから数式をコピーしてDAXに貼り付ける場合、DAX構文がExcelの数式構文と異なるため、DAX数式の正確性を確認してください。 また、関数がDAXとExcelで同じ名前を持っている場合でも、そのパラメーターは異なる場合があり、関数の結果も異なる場合があります。
これらについては、以降の章で詳しく説明します。
Excel DAX-標準パラメーター
DAXには、DAX関数の使用と理解を容易にするための*標準パラメーター*名があります。 さらに、特定のプレフィックスをパラメーター名に使用できます。 接頭辞が十分に明確な場合は、接頭辞自体をパラメータ名として使用できます。
標準パラメータ名
以下は、DAX標準パラメータ名です-
Sr.No. | Parameter Name & Description |
---|---|
1 |
expression 単一のスカラー値を返す任意のDAX式。式は(行/コンテキストごとに)複数回評価されます。 |
2 |
value 式が他のすべての操作の前に1回だけ評価される単一のスカラー値を返すDAX式。 |
3 |
table データのテーブルを返す任意のDAX式。 |
4 |
tableName 標準のDAX構文を使用した既存のテーブルの名前。 式にすることはできません。 |
5 |
columnName 通常は完全修飾された、標準のDAX構文を使用した既存の列の名前。 式にすることはできません。 |
6 |
name 新しいオブジェクトの名前を提供するために使用される文字列定数。 |
7 |
order ソート順を決定するために使用される列挙。 |
8 |
ties Tie値の処理を決定するために使用される列挙体。 |
9 |
type PathItemおよびPathItemReverseのデータ型を決定するために使用される列挙体。 |
パラメータ名のプレフィックス
あなたは接頭辞でパラメータ名を修飾することができます-
- プレフィックスは、引数の使用方法を説明するものでなければなりません。
- 接頭辞は、パラメータの曖昧な読み取りが回避されるような方法である必要があります。
例えば、
- Result_ColumnName -DAX LOOKUPVALUE()関数で結果値を取得するために使用される既存の列を参照します。
- Search_ColumnName -DAX LOOKUPVALUE()関数で値を検索するために使用される既存の列を参照します。
パラメータとしてプレフィックスのみを使用する
パラメータを説明するのに十分なプレフィックスがある場合は、パラメータ名を省略してプレフィックスのみを使用できます。 パラメータ名を省略し、プレフィックスのみを使用すると、読み取り時の混乱を避けるのに役立つ場合があります。
たとえば、DATE(Year_value、Month_value、Day_value)を検討します。 パラメーター名-値は省略できます。これは3回繰り返され、DATE(年、月、日)として記述します。 ご覧のとおり、プレフィックスのみを使用することで、関数が読みやすくなります。
ただし、明確にするために、パラメータ名とプレフィックスが必要になる場合があります。
たとえば、Year_columnNameを検討します。 パラメーター名はColumnNameで、プレフィックスはYearです。 両方とも、パラメータに既存の年の列への参照が必要であることをユーザーに理解させるために必要です。
Excel DAX-関数
ほとんどの* DAX関数*には、Excel関数と同じ名前と機能があります。 ただし、DAX関数は、DAXデータ型を使用し、テーブルと列を操作するように変更されています。
DAXには、Excelにはない追加機能がいくつかあります。 これらのDAX関数は、データモデルのリレーショナルデータベースの側面に関連付けられた関係に基づくルックアップ、再帰的な計算の実行、動的な集計の実行、タイムインテリジェンスを使用した計算など、特定の目的で提供されます。
この章では、DAX言語でサポートされている機能について学びます。 これらのDAX関数の使用方法の詳細については、このチュートリアルライブラリのチュートリアル– DAX関数を参照してください。
DAX関数とは何ですか?
DAX関数は、データモデルのテーブルのデータに対してさまざまなアクションを実行できるようにするために、DAX言語で提供される組み込み関数です。 前述のように、DAXはデータ分析およびビジネスインテリジェンスの目的で使用され、データから洞察を抽出、同化、および導出するためのサポートが必要です。 データモデルに基づいたDAX関数は、DAX言語とDAX関数の使用法を理解すると、ジョブを簡単にするこれらのユーティリティを提供します。
Excel関数と DAX関数
認識しているExcel関数とDAX関数には特定の類似点があります。 ただし、特定の違いもあります。 これらを明確にする必要があります。そのため、DAX関数の使用や、DAX関数を含むDAX数式の記述を間違えないようにすることができます。
Excel関数とDAX関数の類似点
- 多くのDAX関数には、Excel関数と同じ名前と同じ一般的な動作があります。
- DAXには、Excelの配列およびベクトル検索関数に類似した検索関数があります。
Excel関数とDAX関数の違い
- DAX関数は異なるタイプの入力を受け取るように変更されており、DAX関数の一部は異なるデータタイプを返す場合があります。 したがって、これらの関数の名前は同じですが、これらの関数の使用法を個別に理解する必要があります。 このチュートリアルでは、Excel関数との混同を避けるために、DAXで始まるすべてのDAX関数を見つけます。
- 必要な変更を加えない限り、Excelの式でDAX関数を使用したり、DAXでExcelの式/関数を使用したりすることはできません。
- Excel関数は、参照としてセル参照またはセル範囲を取ります。 DAX関数は、セル参照またはセル範囲を参照として使用することはありませんが、代わりに列またはテーブルを参照として使用します。
- Excelの日付と時刻の関数は、シリアル番号として日付を表す整数を返します。 DAXの日付と時刻の関数は、ExcelではなくDAXにあるdatetimeデータ型を返します。
- Excelにはテーブルを返す関数はありませんが、一部の関数は配列を処理できます。 DAX関数の多くは、完全なテーブルと列を簡単に参照して計算を実行し、テーブルまたは値の列を返すことができます。 DAXのこの機能により、DAXが使用されるPower Pivot、Power View、およびPower BIに電力が追加されます。
- DAXルックアップ関数では、テーブル間に関係が確立されている必要があります。
- Excelは、データの列でバリアントデータ型をサポートしています。 列に異なるデータ型のデータを含めることができます。 一方、DAXは、テーブルの列のデータが常に同じデータ型であると想定しています。 データが同じデータ型ではない場合、DAXは列全体を、列内のすべての値に最適なデータ型に変更します。 ただし、データがインポートされ、この問題が発生した場合、DAXはエラーにフラグを立てることができます。
DAXデータ型とデータ型のキャストについては、「DAX構文リファレンス」の章を参照してください。
DAX関数の種類
DAXは、次の種類の関数をサポートしています。
- DAXテーブル値関数
- DAXフィルター関数
- DAX集計関数
- DAXタイムインテリジェンス関数
- DAXの日付と時刻の関数
- DAX情報関数
- DAX論理関数
- DAXの数学およびトリガー関数
- DAXその他の機能
- DAX親および子関数
- DAX統計関数
- DAXテキスト関数
このセクションでは、関数カテゴリレベルでDAX関数について学習します。 DAX関数の構文の詳細と、DAX関数が何を返し、何を行うかについては、このチュートリアルライブラリの「DAX関数」チュートリアルを参照してください。
DAXタイムインテリジェンス関数とDAXフィルター関数は強力であり、特別な言及が必要です。 詳細については、「章-DAXタイムインテリジェンスとDAXフィルター関数について」を参照してください。
DAXテーブル値関数
多くのDAX関数は、テーブルを入力テーブルまたは出力テーブルとして使用するか、両方を実行します。 これらのDAX関数は、DAXテーブル値関数と呼ばれます。 テーブルには単一の列を含めることができるため、DAXテーブル値関数も入力として単一の列を受け取ります。 次のタイプのDAXテーブル値関数があります-
- DAX集計関数
- DAXフィルター関数
- DAXタイムインテリジェンス関数
DAXテーブル値関数を理解することは、DAX数式を効果的に記述するのに役立ちます。
DAX集計関数
DAX集計関数は、テーブルの行で式を集計し、計算に役立ちます。
以下はいくつかのDAX集計関数です-
以下に、DAX集計関数のリストを示します。
- ADDCOLUMNS(<テーブル>、<名前>、<式>、[<名前>、<式>]…)
- 平均(<列>)
- AVERAGEA(<列>)
- AVERAGEX(<テーブル>、<式>)
- COUNT(<列>)
- COUNTA(<列>)
- COUNTAX(<テーブル>、<式>)
- COUNTBLANK(<列>)
- COUNTROWS(<テーブル>)
- COUNTX(<テーブル>、<式>)
- CROSSJOIN(<table1>、<table2>、[<table3>]…)
- DISTINCTCOUNT(<列>)
- GENERATE(<テーブル1>、<テーブル2>)
- GENERATEALL(<テーブル1>、<テーブル2>)
- MAX(<列>)
- MAXA(<列>)
- MAXX(<テーブル>、<式>)
- MIN(<列>)
- MINA(<列>)
- MINX(<テーブル>、<式>)
- PRODUCT(<列>)
- PRODUCTX(<テーブル>、<式>)
- ROW(<名前>、<式>、[<名前>、<式>]…)
- SELECTCOLUMNS(<テーブル>、<名前>、<スカラー式>、
- [<name>、<scalar_expression>]…)
- SUM(<列>)
- SUMMARIZE(<テーブル>、<groupBy_columnName>、[<groupBy_columnName>]…、[<name>、<expression>]…)
- SUMX(<テーブル>、<式>)
- TOPN(<n_value>、<table>、<orderBy_expression>、[<order>]、[<orderBy_expression>、[<order>]]…)
DAXフィルター関数
DAXフィルター関数は、列、テーブル、または現在の行に関連する値を返します。 DAXフィルター関数を使用して、特定のデータ型を返し、関連テーブルの値を検索し、関連値でフィルター処理できます。 DAXルックアップ関数は、テーブルとテーブル間の関係を使用して機能します。 DAX Filter関数を使用すると、データコンテキストを操作して動的な計算を作成できます。
以下は、いくつかのDAXフィルター機能です-
以下に、DAXフィルター関数のリストを示します。
- ADDMISSINGITEMS(<showAllColumn>、[<showAllColumn>]…、<table>、<groupingColumn>、[<groupingColumn>]…[filterTable]…)
- ALL(\ {<table> | <column>、[<column>]、[<column>]…})
- ALLEXCEPT(<テーブル>、<列>、[<列>]…)
- ALLNOBLANKROW(<テーブル> | <列>)
- ALLSELECTED([<テーブル名> | <列名>])
- 計算(<式>、<フィルター1>、<フィルター2>…)
- CALCULATETABLE(<式>、<フィルター1>、<フィルター2>…)
- CROSSFILTER(<columnName1>、<columnName2>、<direction>)
- DISTINCT(<列>)
- EARLIER(<列>、<番号>)
- EARLIEST(<列>)
- FILTER(<テーブル>、<フィルター>)
- FILTERS(<列名>)
- HASONEFILTER(<列名>)
- HASONEVALUE(<列名>)
- ISCROSSFILTERED(<列名>)
- ISFILTERED(<列名>)
- キープフィルター(<式>)
- RELATED(<列>)
- RELATEDTABLE(<テーブル名>)
- SUBSTITUTEWITHINDEX(<テーブル>、<indexColumnName>、<indexColumnsTable>、<orderBy_expression>、[<order>]、[<orderBy_expression>、[<order>]]…])
- USERELATIONSHIP(<列名1>、<列名2>)
- VALUES(<TableNameOrColumnName>)
DAXタイムインテリジェンス関数
DAX Time Intelligence関数は、日付のテーブルを返すか、日付のテーブルを使用して集計を計算します。 これらのDAX関数は、日、月、四半期、年などの期間を使用してデータを操作できるようにすることで、ビジネスインテリジェンス分析のニーズをサポートする計算を作成するのに役立ちます。
以下はいくつかのDAXタイムインテリジェンス機能です-
以下に、DAXタイムインテリジェンス関数のリストを示します。
- CLOSINGBALANCEMONTH(<式>、<日付> [、<フィルター>])
- CLOSINGBALANCEQUARTER(<式>、<日付>、[<フィルター>])
- CLOSINGBALANCEYEAR(<式>、<日付>、[<フィルター>]、[<年の終了日>])
- DATEADD(<dates>、<number_of_intervals>、<interval>)
- DATESBETWEEN(<日付>、<開始日>、<終了日>)
- DATESINPERIOD(<dates>、<start_date>、<number_of_intervals>、<interval>)
- DATESMTD(<日付>)
- DATESQTD(<日付>)
- DATESYTD(<日付>、[<年の終了日>])
- ENDOFMONTH(<日付>)
- ENDOFQUARTER(<日付>)
- ENDOFYEAR(<日付>、[<年の終了日>])
- FIRSTDATE(<日付>)
- FIRSTNONBLANK(<列>、<式>)
- LASTDATE(<日付>)
- LASTNONBLANK(<列>、<式>)
- 翌日(<日付>)
- NEXTMONTH(<日付>)
- NEXTQUARTER(<日付>)
- NEXTYEAR(<日付>、[<年の終了日>])
- OPENINGBALANCEMONTH(<式>、<日付>、[<フィルター>])
- OPENINGBALANCEQUARTER(<式>、<日付>、[<フィルター>])
- OPENINGBALANCEYEAR(<式>、<日付>、[<フィルター>]、[<年の終了日>])
- 並列期間(<日付>、<間隔の数>、<間隔>)
- PREVIOUSDAY(<日付>)
- PREVIOUSMONTH(<日付>)
- PREVIOUSQUARTER(<日付>)
- PREVIOUSYEAR(<日付>、[<年の終了日>])
- SAMEPERIODLASTYEAR(<日付>)
- STARTOFMONTH(<日付>)
- STARTOFQUARTER(<日付>)
- STARTOFYEAR(<日付>)
- TOTALMTD(<式>、<日付>、[<フィルター>])
- TOTALQTD(<式>、<日付>、[<フィルター>])
- TOTALYTD(<式>、<日付>、[<フィルター>]、[<年の終了日>])
DAXの日付と時刻の関数
DAXの日付と時刻の関数は、Excelの日付と時刻の関数に似ています。 ただし、DAXの日付と時刻の関数は、DAXの日時データ型に基づいています。
以下は、DAXの日付と時刻の関数です-
以下に、DAXの日付と時刻の関数のリストを示します。
- DATE(<年>、<月>、<日>)
- DATEVALUE(date_text)
- DAY(<日付>)
- EDATE(<開始日>、<月>)
- EOMONTH(<開始日>、<月>)
- HOUR(<datetime>)
- MINUTE(<datetime>)
- MONTH(<datetime>)
- NOW()
- SECOND(<時間>)
- TIME(時間、分、秒)
- TIMEVALUE(time_text)
- 今日()
- WEEKDAY(<date>、<return_type>)
- WEEKNUM(<date>、<return_type>)
- YEAR(<日付>)
- YEARFRAC(<開始日>、<終了日>、<ベース>)
DAX情報関数
DAX情報関数は、引数として提供されるセルまたは行を調べて、値が予想されるタイプと一致するかどうかを通知します。
以下は、いくつかのDAX情報機能です-
以下は、DAX情報関数のリストです。
- CONTAINS(<テーブル>、<列名>、<値>、[<列名>、<値>]…)
- CUSTOMDATA()
- ISBLANK(<値>)
- ISERROR(<値>)
- ISEVEN(数値)
- ISLOGICAL(<値>)
- ISNONTEXT(<値>)
- ISNUMBER(<値>)
- ISONORAFTER(<スカラー式>、<スカラー式>、[ソート順]、[<スカラー式>、<スカラー式>、[ソート順]]…)
- ISTEXT(<値>)
- LOOKUPVALUE(<result_columnName>、<search_columnName>、<search_value>、[<search_columnName>、<search_value>]…)
- USERNAME()
DAX論理関数
DAX論理関数は、式の値に関する情報を返します。 たとえば、DAX TRUE関数を使用すると、評価している式がTRUE値を返すかどうかを知ることができます。
以下はDAX論理関数です-
以下は、DAX論理関数のリストです。
- AND(<論理1>、<論理2>)
- FALSE()
- IF(logical_test>、<value_if_true>、value_if_false)
- IFERROR(値、value_if_error)
- NOT(<論理>)
- OR(<論理1>、<論理2>)
- SWITCH(<式>、<値>、<結果>、[<値>、<結果>]…、[<else>])
- TRUE()
DAXの数学およびトリガー関数
DAXの数学関数と三角関数は、Excelの数学関数と三角関数に非常に似ています。
以下は、いくつかのDAX MathおよびTrig関数です-
以下に示すのは、DAX MathおよびTrig関数のリストです。
- ABS(<番号>)
- ACOS(数値)
- ACOSH(数値)
- ASIN(数値)
- ASINH(数値)
- ATAN(数値)
- ATANH(数値)
- CEILING(<number>、<significance>)
- COMBIN(number、number_chosen)
- COMBINA(number、number_chosen)
- COS(数値)
- COSH(数値)
- CURRENCY(<値>)
- DEGREES(角度)
- DIVIDE(<分子>、<分母>、[<代替結果>])
- EVEN(数値)
- EXP(<番号>)
- FACT(<番号>)
- FLOOR(<number>、<significance>)
- GCD(数値1、[数値2]、…)
- INT(<番号>)
- ISO.CEILING(<number>、[<significance>])
- LCM(number1、[number2]、…)
- LN(<番号>)
- LOG(<number>、<base>)
- LOG10(<番号>)
- INT(<番号>)
- MROUND(<番号>、<複数>)
- 奇数)
- PI()
- POWER(<番号>、<電源>)
- PRODUCT(<列>)
- PRODUCTX(<テーブル>、<式>)
- QUOTIENT(<分子>、<分母>)
- RADIANS(角度)
- RAND()
- RANDBETWEEN(<下>、<上>)
- ROUND(<number>、<num_digits>)
- ROUNDDOWN(<number>、<num_digits>)
- ROUNDUP(<number>、<num_digits>)
- SIN(数値)
- SINH(数値)
- SIGN(<番号>)
- SQRT(<番号>)
- SUM(<列>)
- SUMX(<テーブル>、<式>)
- TAN(数値)
- TANH(数値)
- TRUNC(<number>、<num_digits>)
DAXその他の機能
これらのDAX関数は、他のほとんどの関数が属するカテゴリでは定義できない独自のアクションを実行します。
以下はいくつかのDAXその他の機能です-
以下に、DAXその他の関数のリストを示します。
- EXCEPT(<table_expression1>、<table_expression2>
- GROUPBY(<テーブル>、[<groupBy_columnName1>]、[<name>、<expression>]…)
- INTERSECT(<table_expression1>、<table_expression2>)
- ISEMPTY(<table_expression>)
- NATURALINNERJOIN(<leftJoinTable>、<rightJoinTable>)
- NATURALLEFTOUTERJOIN(<leftJoinTable>、<rightJoinTable>)
- SUMMARIZECOLUMNS(<groupBy_columnName>、[<groupBy_columnName>]…、[<filterTable>]…、[<name>、<expression>]…)
- UNION(<table_expression1>、<table_expression2>、[<table_expression>]…)
- VAR <名前> = <式>
DAX親および子関数
DAXの親および子関数は、データモデルで親/子階層として表示されるデータの管理に役立ちます。
以下は、DAXのいくつかの親関数と子関数です-
以下に、DAXの親関数と子関数のリストを示します。
- PATH(<ID_columnName>、<parent_columnName>)
- PATHCONTAINS(<パス>、<アイテム>)
- PATHITEM(<パス>、<位置>、[<タイプ>])
- PATHITEMREVERSE(<パス>、<位置>、[<タイプ>])
- PATHLENGTH(<パス>)
DAX統計関数
DAX統計関数は、Excel統計関数に非常に似ています。
以下はいくつかのDAX統計関数です-
以下に、DAX統計関数のリストを示します。
- BETA.DIST(x、アルファ、ベータ、累積、[A]、[B])
- BETA.INV(確率、アルファ、ベータ、[A]、[B])
- CHISQ.INV(確率、deg_freedom)
- CHISQ.INV.RT(確率、deg_freedom)
- CONFIDENCE.NORM(alpha、standard_dev、size)
- CONFIDENCE.T(アルファ、standard_dev、サイズ)
- DATATABLE(ColumnName1、DataType1、ColumnName2、DataType2 …、\ {\ {Value1、Value2 …}、\ {ValueN、ValueN + 1 …} …})
- EXPON.DIST(x、lambda、累積)
- GEOMEAN(<列>)
- GEOMEANX(<テーブル>、<式>)
- MEDIAN(<列>)
- MEDIANX(<テーブル>、<式>)
- PERCENTILE.EXC(<列>、<k>)
- PERCENTILE.INC(<列>、<k>)
- PERCENTILEX.EXC(<テーブル>、<式>、k)
- PERCENTILEX.EXC(<テーブル>、<式>、k)
- POISSON.DIST(x、平均、累積)
- RANK.EQ(<値>、<列名> [、<注文>])
- RANKX(<table>、<expression> [、<value> [、<order> [、<ties>]]])
- サンプル(<n_value>、<table>、<orderBy_expression>、[<order>]、[<orderBy_expression>、[<order>]]…)
- STDEV.P(<ColumnName>)
- STDEV.S(<列名>)
- STDEVX.P(<テーブル>、<式>)
- STDEVX.S(<テーブル>、<式>)
- SQRTPI(数値)
- VAR.P(<columnName>)
- VAR.S(<columnName>)
- VARX.P(<テーブル>、<式>)
- VARX.S(<テーブル>、<式>)
- XIRR(<テーブル>、<値>、<日付>、[推測])
- XNPV(<テーブル>、<値>、<日付>、<レート>)
DAXテキスト関数
DAXテキスト関数は、テーブルと列で機能します。 DAX Text関数を使用すると、文字列の一部を返したり、文字列内のテキストを検索したり、文字列値を連結したりできます。 日付、時刻、および数値の形式を制御することもできます。
以下はいくつかのDAX Text関数です-
以下は、DAX Text関数のリストです。
- ブランク()
- CODE(テキスト)
- CONCATENATE(<テキスト1>、<テキスト2>)
- CONCATENATEX(<テーブル>、<式>、[区切り記号])
- EXACT(<テキスト1>、<テキスト2>)
- FIND(<find_text>、<within_text>、[<start_num>]、[<NotFoundValue>])
- FIXED(<number>、<decimals>、<no_commas>)
- FORMAT(<値>、<フォーマット文字列>)
- LEFT(<テキスト>、<num_chars>)
- LEN(<テキスト>)
- LOWER(<テキスト>)
- MID(<text>、<start_num>、<num_chars>)
- REPLACE(<old_text>、<start_num>、<num_chars>、<new_text>)
- REPT(<text>、<num_times>)
- RIGHT(<テキスト>、<num_chars>)
- SEARCH(<find_text>、<within_text>、[<start_num>]、[<NotFoundValue>])
- SUBSTITUTE(<テキスト>、<古いテキスト>、<新しいテキスト>、<インスタンス番号>)
- TRIM(<テキスト>)
- 上部(<テキスト>)
- VALUE(<テキスト>)
Excel DAX-DAX関数について
Excel 2013では、DAXには246個の関数があります。 「DAX関数」の章で、さまざまな種類のDAX関数について既に学習しました。 ただし、DAX数式でDAX関数を使用する必要がある場合は、関数を詳細に理解する必要があります。 関数の構文、パラメーターの種類、関数が返すものなどを知っておく必要があります。
DAXフォーミュラを作成している場合、該当する場合はDAX関数を使用することをお勧めします。 これについては、このチュートリアルライブラリの「DAX関数」を参照して、246個のDAX関数のそれぞれをどこでどのように使用するかを深く理解してください。 このチュートリアルとDAX関数のチュートリアルをいつでもやり取りして、DAXの習得を図ることができます。
この章では、「DAX関数」チュートリアルでDAX関数の読み方と解釈方法を理解します。
DAX関数-説明の構造
DAX関数のチュートリアルでは、各DAX関数は、次のセクションで構成される標準構造で説明されています-
- 説明
- 構文
- パラメーター
- 戻り値
- 備考
- 例
これらのそれぞれについて、次のセクションで学習します。
説明
[説明]セクションでは、DAX関数の内容と使用できる場所を学習します。
構文
構文セクションでは、正確な関数名とそれぞれのパラメーターを学習します。
パラメーター
[パラメーター]セクションでは、特定のDAX関数の各パラメーター、パラメーターが入力か出力か、オプションがあるかどうかについて学習します。 章-DAX標準パラメーターで見られるように、標準パラメーター名のみが使用されます。
戻り値
[戻り値]セクションでは、DAX関数が返す値とそのデータ型について学習します。
備考
「解説」セクションでは、DAX関数の使用法について知る必要がある追加情報について学習します。
例
DAX関数の説明は、関数の使用例で終了します。
Excel DAX-評価コンテキスト
DAXでは、コンテキストは、DAXフォーミュラを作成する際に知っておくべき重要な用語です。 *評価コンテキスト*とも呼ばれるDAXコンテキストは、DAX式の評価と対応する結果を決定するために使用されます。 つまり、DAXの式の結果はコンテキストに応じて変化する可能性があります。 特定のDAXコンテキストがどのように使用され、結果がどのように異なる可能性があるかを明確に理解する必要があります。
評価コンテキストを使用すると、動的分析を実行できます。動的分析では、DAX数式の結果を変更して、現在の行またはセル選択、および関連データを反映できます。 コンテキストを理解し、コンテキストを効果的に使用することは、強力なDAX式を構築し、動的データ分析を実行し、DAX式の問題をトラブルシューティングするために非常に重要です。 評価コンテキストは、複雑なデータ分析レポートを作成するために習得する必要があるDAXのすべての高度な機能の基盤です。
DAX数式で関連する使用法についてDAX関数を参照し続ける場合、結果を明確にするためにDAXコンテキストに関するこの章を参照する必要があります。
DAXのコンテキストの種類
DAXは、次の評価コンテキストをサポートしています-
- 行コンテキスト
- フィルターコンテキスト
DAX数式が評価されると、すべてのコンテキストが考慮され、関連するものとして適用されます。 コンテキストは一緒に存在し、式の結果は、値の計算中に使用されるコンテキストに基づいて異なります。 たとえば、ピボットテーブルで行、列、およびフィルターのフィールドを選択すると、小計は、小計/合計が関連付けられている行と列に基づいて動的に計算され、行と列の値はフィルターによって決定されます中古。
行コンテキスト
行コンテキストとは、DAX数式またはDAX関数が、テーブルのどの行をいつでも参照していることを知っていることを意味します。 行コンテキストを現在の行と見なすことができます。 数式は、行コンテキストを使用して行ごとに計算されます。
一部のDAX関数(X関数、FILTER()など)およびすべての計算列には行コンテキストがあります。 たとえば、DAX式= YEAR([日付])を使用して計算列Yearを作成する場合、計算列の値は、表の特定の列に特定のDAX式を行ごとに適用することによって取得されます。
つまり、計算列を作成した場合、行コンテキストは、個々の行の値と、現在の行に関連する列の値で構成され、使用されるDAX式によって決定されます。 DAXの数式には行への参照が含まれていませんが、DAXは値を計算するときに行のコンテキストを暗黙的に理解します。
計算列を定義すると、DAXは行コンテキストを自動的に作成し、使用されるDAX数式を含むすべての計算値が計算列に表示されます。
対照的に、SUMXなどのDAX関数がある場合、行ごとに計算された値は合計され、最終結果のみが表示されます。 つまり、中間値は破棄されます。
関連テーブルがある場合、行コンテキストにより、関連テーブルのどの行が現在の行に関連付けられるかが決まります。 ただし、行コンテキストはリレーションシップを介して自動的に伝播しません。 このためには、DAX関数-RELATEDおよびRELATEDTABLEを使用する必要があります。
複数行コンテキスト
DAXには、SUMXのような反復関数があります。 これらの関数を使用して、行コンテキストをネストできます。 これにより、複数の現在の行と現在の行コンテキストを持つことができる内側のループと外側のループを再帰的にプログラムできます。
たとえば、現在の操作の前にある操作の行コンテキストを格納するDAX関数Earlier()を使用できます。 この関数は、2つのコンテキストセットをメモリに保存します。1つのコンテキストセットは、式の内側のループの現在の行を表し、別のコンテキストセットは、式の外側のループの現在の行を表します。 DAXは2つのループ間で値を自動的にフィードするため、複雑な集計を作成できます。
例については、「シナリオ-値のランキングと比較」の章のシナリオ-値を動的にランク付けするDAX数式の作成を参照してください。
フィルターコンテキスト
フィルターコンテキストとは、DAXのデータモデルに適用されるフィルター処理を指します。 フィルターコンテキストは、ピボットテーブルとDAX関数によって作成されます。
ピボットテーブルによって作成されたフィルターコンテキスト
ピボットテーブルによって作成されたフィルターコンテキストは、次からのピボットテーブルフィールドで行われた選択によって適用される自然なフィルターです-
- Rows
- 列
- フィルター
- スライサー
ピボットテーブルによって作成されたフィルターコンテキストは、データモデルの基になるテーブルをフィルター処理します。 テーブルが関連している場合、フィルターはルックアップテーブルからデータテーブルに流れます。 つまり、ルックアップテーブルの結果に基づいてデータテーブルをフィルタリングできます。 フィルターの伝播は、逆方向では発生しません。 ただし、DAX数式を使用して、データテーブルの結果に基づいてルックアップテーブルをフィルター処理できます。
DAX関数によって作成されたフィルターコンテキスト
DAXフィルター関数を使用して、DAX数式で使用される値を制御するフィルター式を含む計算フィールドと計算列を定義できます。 これらの計算フィールドと計算列は、ピボットテーブルフィールドリストの一部となり、ピボットテーブルに追加できます。 これらのDAX Filter関数を使用して、特定の列のフィルターを選択的にクリアすることもできます。 フィルターコンテキストを作成する強力なDAXフィルター関数の例は、CALCULATE()です。 例については、「シナリオ-複雑な計算の実行」の章を参照してください。
行コンテキストへの追加としてのコンテキストのフィルタリング
行コンテキストは、フィルターコンテキストを自動的に作成しません。 DAXフィルター関数を含むDAX数式でも同じことが実現できます。
Excel DAX-数式
DAXは、Power PivotTablesでカスタム計算を作成するための式言語です。 リレーショナルデータを操作し、DAX数式で動的集計を実行するように設計されたDAX関数を使用できます。
- DAX数式*はExcelの数式に非常に似ています。 DAX数式を作成するには、等号を入力し、その後に関数名または式、および必要な値または引数を入力します。
DAX関数と DAXフォーミュラ
DAX数式にはDAX関数を含めることができ、その使用法を活用できます。 これは、DAXの式が重要な点でDAX関数と異なる傾向がある場所です。
- DAX関数は、常に完全な列またはテーブルを参照します。 テーブルまたは列の特定の値のみを使用する場合は、式にフィルターを追加できます。
- 行ごとに計算をカスタマイズする場合、Power Pivotには、現在の行の値または関連する値を使用して、コンテキストによって異なる計算を実行できる関数が用意されています。
- DAXには、単一の値ではなく、結果としてテーブルを返すタイプの関数が含まれています。 これらの関数を使用して、他の関数に入力を提供し、テーブルまたは列全体の値を計算できます。
- 一部のDAX関数は、タイムインテリジェンスを提供します。これにより、意味のある日付範囲を使用して計算を作成し、並行期間にわたって結果を比較できます。
DAXフォーミュラ構文について
すべてのDAX式には次の構文があります-
- 各数式は等号で始まる必要があります。
- 等号の右側に、関数名を入力または選択するか、式を入力できます。 式には、DAX演算子で接続されたテーブル名と列名を含めることができます。
以下はいくつかの有効なDAXの式です-
- [列コスト] + [列税]
- =今日()
IntelliSense機能について
DAXはIntelliSense機能を提供します。これにより、DAXの式を迅速かつ正確に記述できます。 この機能を使用すると、テーブル、列、および関数の名前を完全に入力する必要はありませんが、DAX数式の作成中にドロップダウンリストから関連する名前を選択します。
- 関数名の最初の数文字を入力し始めます。 オートコンプリートは、使用可能な機能のリストを、それらの文字で始まる名前で表示します。
- 関数名のいずれかにポインターを置きます。 IntelliSenseツールチップが表示され、関数の使用方法が示されます。
- 関数名をクリックします。 関数名が式バーに表示され、構文が表示されます。これは、引数を選択する際のガイドとなります。
- 必要なテーブル名の最初の文字を入力します。 オートコンプリートは、その文字で始まる名前の使用可能なテーブルと列のリストを表示します。
- Tabキーを押すか、名前をクリックして、オートコンプリートリストの項目を数式に追加します。
- Fx ボタンをクリックして、使用可能な機能のリストを表示します。 ドロップダウンリストから関数を選択するには、矢印キーを使用して項目を強調表示し、[OK]をクリックして関数を式に追加します。
- 可能なテーブルと列のドロップダウンリストから引数を選択するか、必要な値を入力して、関数に引数を指定します。
この便利なIntelliSense機能の使用を強くお勧めします。
DAX数式の使用場所
DAX数式を使用して、計算列と計算フィールドを作成できます。
- 計算列でDAX数式を使用するには、列を追加してから数式バーに式を入力します。 これらの数式は、PowerPivotウィンドウで作成します。
- 計算フィールドでDAX数式を使用できます。 あなたはこれらの式を作成します-
- [計算フィールド]ダイアログボックスのExcelウィンドウ、または
- テーブルの計算領域のPower Pivotウィンドウ。
同じ計算式が計算列または計算フィールドのどちらで使用されるかによって、同じ計算式の動作が異なります。
- 計算列では、数式は常にテーブル全体の列のすべての行に適用されます。 行のコンテキストによっては、値が変わる場合があります。
- ただし、計算フィールドでは、結果の計算はコンテキストに大きく依存します。 つまり、ピボットテーブルの設計と行見出しと列見出しの選択は、計算で使用される値に影響します。
DAXの式を作成するには、DAXのコンテキストの概念を理解することが重要です。 これは、DAXの最初の段階では少し難しい場合がありますが、理解してしまえば、複雑で動的なデータ分析に必要な効果的なDAX式を作成できます。 詳細については、「DAXコンテキスト」の章を参照してください。
DAXフォーミュラの作成
前のセクションでIntelliSense機能について既に学習しました。 DAX数式を作成する際には、必ず使用してください。
DAX式を作成するには、次の手順を使用します-
- 等号を入力します。
- 等号の右側に、次を入力します-
- 関数またはテーブル名の最初の文字を入力し、ドロップダウンリストから完全な名前を選択します。
- 関数名を選択した場合は、括弧「(」を入力します。
- テーブル名を選択した場合は、ブラケット「[」を入力します。 列名の最初の文字を入力し、ドロップダウンリストから完全な名前を選択します。
- 列名を「]」で、関数名を「)」で閉じます。
- 式の間にDAX演算子を入力するか、「、」を入力して、関数の引数を区切ります。
- DAX数式が完了するまで、手順1〜5を繰り返します。
たとえば、東部地域の総売上高を検索するとします。 以下に示すように、DAX数式を作成できます。 East_Salesはテーブルの名前です。 金額は表の列です。
「DAX構文」の章で既に説明したように、任意の列名へのすべての参照で列名とともにテーブル名を使用することをお勧めします。 これは「完全修飾名」と呼ばれます。
DAXの式は、計算フィールド用か計算列用かによって異なります。 詳細については、以下のセクションを参照してください。
計算列のDAX数式の作成
PowerPivotウィンドウで計算列のDAX数式を作成できます。
- 計算列を追加するテーブルのタブをクリックします。
- リボンの[デザイン]タブをクリックします。
- 追加をクリックします。
- 数式バーに計算列のDAX数式を入力します。
このDAXの式は、テーブルEast_Salesのすべての行に対して次のことを行います-
- 行の「金額」列の値を、同じ行の「単位」列の値で除算します。
- 同じ行の新しく追加された列に結果を配置します。
- テーブルのすべての行が完了するまで、手順1と2を繰り返します。
これらのユニットが上記の式で販売される単価の列を追加しました。
- ご覧のとおり、計算列には計算と記憶領域も必要です。 したがって、必要な場合にのみ計算列を使用してください。 可能な限り十分な計算フィールドを使用します。
詳細については、「計算列」の章を参照してください。
計算フィールドのDAX数式の作成
ExcelウィンドウまたはPower Pivotウィンドウのいずれかで、計算フィールドのDAX数式を作成できます。 計算フィールドの場合、事前に名前を指定する必要があります。
- Excelウィンドウで計算フィールドのDAX数式を作成するには、[計算フィールド]ダイアログボックスを使用します。
- Power Pivotウィンドウで計算フィールドのDAX数式を作成するには、関連するテーブルの計算領域のセルをクリックします。 CalculatedFieldName:=でDAX数式を開始します。
たとえば、Total East Sales Amount:= SUM([East_Sales [Amount])
Excelウィンドウで[計算フィールド]ダイアログボックスを使用する場合は、保存する前に数式を確認し、正しい数式を使用するために必須の習慣にすることができます。
これらのオプションの詳細については、「計算フィールド」の章を参照してください。
数式バーを使用してDAX数式を作成する
Power Pivotウィンドウには、Excelウィンドウの数式バーに似た数式バーもあります。 数式バーを使用すると、オートコンプリート機能を使用して構文の作成と編集が簡単になり、構文エラーを最小限に抑えることができます。
- テーブルの名前を入力するには、テーブルの名前の入力を開始します。 数式オートコンプリートは、それらの文字で始まる有効なテーブル名を含むドロップダウンリストを提供します。 必要に応じて、1文字から始めて、さらに文字を入力してリストを絞り込むことができます。
- 列の名前を入力するには、選択したテーブルの列名のリストから列を選択できます。 テーブル名の右側にブラケット「[」を入力し、選択したテーブルの列のリストから列を選択します。
オートコンプリートを使用するためのヒント
以下は、オートコンプリートを使用するためのいくつかのヒントです-
- DAX数式に関数と数式をネストできます。 このような場合、ネストされた関数を持つ既存の数式の途中で数式オートコンプリートを使用できます。 挿入ポイントの直前のテキストは、ドロップダウンリストに値を表示するために使用され、挿入ポイントの後のすべてのテキストは変更されません。
- 定数用に作成した定義名は、オートコンプリートドロップダウンリストには表示されませんが、入力することはできます。
- 関数の閉じ括弧は自動的に追加されません。 あなたは自分でそれをする必要があります。
- 各関数が構文的に正しいことを確認する必要があります。
挿入機能機能について
Power PivotウィンドウとExcelウィンドウの両方に、 _ fx_ というラベルの付いた[関数の挿入]ボタンがあります。
Power Pivotウィンドウの[関数の挿入]ボタンは、数式バーの左側にあります。
Excelウィンドウの[関数の挿入]ボタンは、[式]の右側にある[計算フィールド]ダイアログボックスにあります。
[関数の挿入]ダイアログボックスでは、カテゴリごとに関数を選択でき、各関数の簡単な説明が表示されます。
DAX数式で関数の挿入を使用する
あなたが次の計算フィールドを作成したいと仮定します-
次の手順を使用して、[関数の挿入]ダイアログボックスを使用できます-
- [結果]テーブルの計算領域をクリックします。
- 数式バーに次のように入力します-
- [関数の挿入]ボタン( fx )をクリックします。
関数の挿入ダイアログボックスが表示されます。
- 次のスクリーンショットに示すように、[カテゴリの選択]ボックスで[統計]を選択します。
- 次のスクリーンショットに示すように、[関数の選択]ボックスで[COUNTA]を選択します。
ご覧のとおり、選択したDAX関数の構文と関数の説明が表示されます。 これにより、挿入する関数であることを確認できます。
- OKをクリックしてください。 メダル数:= COUNTA(が数式バーに表示され、関数の構文を示すツールチップも表示されます。
- タイプ[。 これは、列名を入力しようとしていることを意味します。 現在のテーブルのすべての列と計算フィールドの名前がドロップダウンリストに表示されます。 IntelliSenseを使用して式を完成できます。
- タイプM ドロップダウンリストに表示される名前は、「M」で始まる名前に限定されます。
- メダルをクリックします。
- メダルをダブルクリックします。 メダル数:= COUNTA([メダル]は数式バーに表示されます。 括弧を閉じます。
- Enterを押します。 これで終わりです。 同じ手順を使用して、計算列も作成できます。 関数の挿入機能を使用して、同じ手順に従って、Excelウィンドウの[計算フィールド]ダイアログボックスに関数を挿入することもできます。
- [式]の右側にある[関数の挿入( fx )]ボタンをクリックします。
関数の挿入ダイアログボックスが表示されます。 残りの手順は上記と同じです。
DAX数式で複数の関数を使用する
DAX数式には、最大64個のネストされた関数を含めることができます。 ただし、DAXの数式にネストされた関数が非常に多く含まれていることはほとんどありません。
DAX式に多くのネストされた関数がある場合、次の欠点があります-
- 数式を作成するのは非常に困難です。
- 数式にエラーがある場合、デバッグするのは非常に困難です。
- 式の評価はそれほど速くありません。
そのような場合、式をより小さな管理可能な式に分割し、大きな式をインクリメンタルに作成できます。
標準集計を使用したDAX数式の作成
データ分析を実行すると、集計データに対して計算が実行されます。 SUM、COUNT、MIN、MAX、DISTINCTCOUNTなど、いくつかのDAX集計関数があります。 DAX数式で使用できます。
Power PivotウィンドウのAutoSum機能を使用して、標準集計を使用して数式を自動的に作成できます。
- [Power Pivot]ウィンドウの[結果]タブをクリックします。 結果表が表示されます。
- [メダル]列をクリックします。 列全体–メダルが選択されます。
- リボンの[ホーム]タブをクリックします。
- [計算]グループの[自動合計]の横の下矢印をクリックします。
- ドロップダウンリストで[COUNT]をクリックします。
ご覧のように、計算フィールドメダルの数は、列の下の計算領域–メダルに表示されます。 DAXの式は、式バーにも表示されます-
AutoSum機能により作業が完了し、データ集計用の計算フィールドが作成されました。 さらに、AutoSumはDAX関数COUNTの適切なバリアントを採用しています。 COUNTA(DAXにはCOUNT、COUNTA、COUNTAX機能があります)。
注意事項-AutoSum機能を使用するには、リボンのAutoSumの横にある下矢印をクリックする必要があります。 代わりにAutoSum自体をクリックすると、次のようになります-
また、メダルは数値データ列ではなく、列のテキストを数値に変換できないため、エラーがフラグされます。
DAXエラーの詳細については、「* DAXエラーリファレンス*」の章を参照してください。
DAXの数式とリレーショナルモデル
ご存知のように、Power Pivotのデータモデルでは、複数のデータテーブルを操作し、関係を定義することでテーブルを接続できます。 これにより、関連するテーブル間の列の相関を計算に使用する興味深いDAX数式を作成できます。
2つのテーブル間にリレーションシップを作成する場合、キーとして使用される2つの列が、完全ではないにしても、少なくともほとんどの行で一致する値を持つことを確認する必要があります。 Power Pivotは参照整合性を強制しないため(詳細については次のセクションを参照)、Power Pivotデータモデルでは、キー列に一致しない値を保持して関係を作成することができます。 ただし、キー列に空白または一致しない値が存在すると、DAX数式の結果とピボットテーブルの外観に影響する場合があります。
参照整合性
参照整合性を確立するには、データを入力または削除するときにテーブル間の定義された関係を保持するための一連のルールを作成する必要があります。 これを排他的に保証しないと、Power Pivotが強制しないため、データ変更が行われる前に作成されたDAX数式で正しい結果が得られない場合があります。
参照整合性を強制する場合、次の落とし穴を防ぐことができます-
- プライマリテーブルに関連する行がない場合に、関連するテーブルに行を追加する(つまり、 キー列の値が一致する場合)。
- プライマリテーブルのデータを変更すると、関連テーブルに孤立した行が生じます(つまり、 キー列にデータ値があり、主テーブルのキー列に一致する値がない行。
- 関連テーブルの行に一致するデータ値がある場合、プライマリテーブルから行を削除します。
DAX数式の結果の更新
DAX数式は、外部データソースからのデータを含む大きなデータを含む計算で使用されます。 DAX計算はライブデータも対象としているため、データは時々変更される可能性があります。
DAX式の結果は、2つの機会に更新する必要があります-
- データ更新-データが更新されたとき。
- 再計算-DAX式に変更がある場合。
データの更新と比較 再計算
データの更新と再計算は、2つの別個の関連する操作です。
- データ更新は、ワークブックのデータモデルのデータを更新して、外部データソースから最新のデータを取得するプロセスです。
- 再計算とは、DAX数式を含むブック内のすべての列、テーブル、およびピボットテーブルを更新し、DAX数式自体の変更に起因する基になるデータの変更を反映するプロセスです。
ブック内のDAX数式が再計算されるまで、ブックを保存または発行しないでください。
データモデルのデータを更新するさまざまな方法
Power Pivotは、外部データソースの変更を自動的に検出しません。
- 指定できる間隔で、Power Pivotウィンドウからデータを手動で更新できます。
- ブックをSharePointサイトに公開している場合、外部ソースからの自動データ更新をスケジュールできます。
これらの詳細については、「データモデルのデータの更新」の章を参照してください。
DAXフォーミュラの再計算
DAX数式の再計算は重要なタスクです。再計算中に列の依存関係がチェックされ、列が変更された場合、データが無効な場合、または以前使用していたDAX数式にエラーが発生した場合に通知されるためです。
再計算は、次の方法でパフォーマンスに影響を与える可能性があります-
- 計算列の場合、DAX式を変更するたびに、列全体に対してDAX式の結果を常に再計算する必要があります。
- 計算フィールドの場合、DAX数式の結果は、計算フィールドがピボットテーブルまたはピボットグラフのコンテキストに配置されるまで計算されません。 データのフィルターに影響を与える行または列のヘッダーを変更するか、ピボットテーブルを手動で更新すると、DAX数式が再計算されます。
DAXでは、数式の再計算は自動または手動で実行できます。
再計算の詳細については、「* DAX数式の再計算*」の章を参照してください。
Excel DAX-データモデルのデータの更新
DAXは、Excel Power Pivotのデータモデルのデータの計算に使用されます。 DAXを使用すると、データモデリングとレポートアクティビティを効果的に処理できます。 ただし、これには、現在のデータを反映するために、データモデルのデータを随時更新する必要があります。
データ接続を確立することにより、外部データソースからワークブックのデータモデルにデータをインポートできます。 いつでもソースからデータを更新できます。 このオプションは、ライブセールス情報または1日に数回更新されるデータフィードを含むリレーショナルデータベースからデータを取得する場合に便利です。
データモデルのデータを更新するさまざまな方法
次の方法でデータモデルのデータを更新できます-
- データモデルのデータを随時更新する。
- 接続プロパティなど、データソースに変更を加えます。
- ソースデータが変更された後のデータモデルのデータの更新。
- データをフィルタリングして、データソースのテーブルから行を選択的にロードします。
データモデルのデータの更新
既存のソースから更新されたデータを取得することに加えて、ソースデータのスキーマを変更するたびにワークブックのデータを更新する必要があります。 これらの変更には、列またはテーブルの追加、またはインポートされる行の変更が含まれます。
データの追加、データの変更、またはフィルターの編集は、常にそのデータソースに依存するDAX数式の再計算をトリガーすることに注意してください。 詳細については、「DAX数式の再計算」の章を参照してください。
データモデルには2種類のデータ更新があります-
手動更新
手動更新オプションを選択すると、データモデルのデータをいつでも手動で更新できます。 デフォルトであるすべてのデータを更新するか、個々のデータソースの更新するテーブルと列を手動で選択できます。
自動またはスケジュールされた更新
PowerPivotをサポートするPowerPivotギャラリーまたはSharePointサイトにワークブックを公開している場合、ユーザーまたはSharePoint管理者は、ワークブック内のデータを自動的に更新するスケジュールを作成できます。 このような場合、サーバーで無人のデータ更新をスケジュールできます。
既存のデータソースの手動更新
既存のデータソースからデータを更新する必要がある場合、または新しいDAX数式を設計するために最新のデータを取得する必要がある場合は、いつでも手動でデータを更新できます。 1つのテーブル、同じデータ接続を共有するすべてのテーブル、またはデータモデル内のすべてのテーブルを更新できます。
SQL ServerやOracleなどのリレーショナルデータソースからデータをインポートした場合、1回の操作ですべての関連テーブルを更新できます。 新しいデータまたは更新されたデータをデータモデルに読み込む操作は、多くの場合、DAX数式の再計算をトリガーします。どちらの場合も、完了するまでに時間がかかる場合があります。 したがって、データソースを変更したり、データソースから取得したデータを更新したりする前に、潜在的な影響に注意する必要があります。
データモデル内の単一のテーブルまたはすべてのテーブルのデータを更新するには、次を行います-
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- 更新をクリックします。
- 選択したテーブルを更新するには、ドロップダウンリストで[更新]をクリックします。
- すべてのテーブルを更新するには、ドロップダウンリストで[すべて更新]をクリックします。
データモデルで同じ接続を使用するすべてのテーブルのデータを更新するには、次を行います-
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- [外部データの取得]グループの[既存の接続]をクリックします。
[既存の接続]ダイアログボックスが表示されます。
- 接続を選択します。
- [更新]ボタンをクリックします。
PowerPivotエンジンが選択したテーブルまたはデータソースのすべてのテーブルからデータをリロードすると、[データ更新]ダイアログボックスが表示され、データ更新の進行状況情報が表示されます。
3つの可能な結果があります-
- 成功-各テーブルにインポートされた行数について報告します。
- エラー-データベースがオフラインの場合、権限がなくなったときにエラーが発生する可能性があります。 ソースで表または列が削除または名前変更されます。
- キャンセル-これは、おそらく接続でリフレッシュが無効になっているため、Excelがリフレッシュ要求を発行しなかったことを意味します。
閉じるボタンをクリックします。
データソースの変更
データモデルのデータを変更するには、Power Pivotウィンドウで接続情報を編集するか、データモデルで使用されるテーブルと列の定義を更新します。
既存のデータソースに次の変更を加えることができます-
つながり
- データベース名またはサーバー名を編集します。
- ソーステキストファイル、スプレッドシート、またはデータフィードの名前を変更します。
- データソースの場所を変更します。
- リレーショナルデータソースの場合、デフォルトのカタログまたは初期カタログを変更します。
- データへのアクセスに使用される認証方法または資格情報を変更します。
- データソースの詳細プロパティを編集します。
テーブル
- データのフィルターを追加または削除します。
- フィルター基準を変更します。
- テーブルを追加または削除します。
- テーブル名を変更します。
- データソースのテーブルとデータモデルのテーブル間のマッピングを編集します。
- データソースから別の列を選択します。
列
- 列名を変更します。
- 新しい列を追加します。
- データモデルから列を削除します(データソースには影響しません)。
次の方法で既存のデータソースのプロパティを編集できます-
- ソースとして使用されるファイル、フィード、データベース、そのプロパティ、またはその他のプロバイダー固有の接続オプションなどの接続情報を変更できます。
- テーブルと列のマッピングを変更し、使用されなくなった列への参照を削除できます。
- 外部データソースから取得するテーブル、ビュー、または列を変更できます。
既存のデータソースへの接続の変更
現在の接続で使用されている外部データソースを変更することにより、外部データソースに対して作成した接続を変更できます。 ただし、従うべき手順は、データソースの種類によって異なります。
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- [外部データの取得]グループの[既存の接続]をクリックします。
[既存の接続]ダイアログボックスが表示されます。 変更する接続を選択します。
変更するデータソースのタイプに応じて、プロバイダーが異なる場合があります。 また、使用可能なプロパティを変更する必要がある場合があります。 データを含むExcelブックへの接続の簡単な例を考えてみましょう。
- [編集]ボタンをクリックします。 [接続の編集]ダイアログボックスが表示されます。
- [参照]ボタンをクリックして、同じタイプの別のデータベース(この例ではExcelブック)を検索しますが、名前または場所は異なります。
- [開く]ボタンをクリックします。
新しいファイルが選択されます。 接続情報を変更したことを示すメッセージが表示されます。接続を確認するには、テーブルを保存して更新する必要があります。
- [保存]ボタンをクリックします。 [既存の接続]ダイアログボックスに戻ります。
- [更新]ボタンをクリックします。 [データ更新]ダイアログボックスが表示され、データ更新の進行状況が表示されます。 データ更新のステータスが表示されます。 詳細については、「既存のデータソースを手動で更新する」セクションを参照してください。
- データの更新が成功したら、[閉じる]をクリックします。
- [既存の接続]ダイアログボックスで[閉じる]をクリックします。
テーブルと列のマッピング(バインディング)の編集
データソースが変更されたときに列のマッピングを編集するには、次の操作を行います-
- [PowerPivot]ウィンドウで、変更するテーブルを含むタブをクリックします。
- リボンの[デザイン]タブをクリックします。
- テーブルのプロパティをクリックします。
[テーブルプロパティの編集]ダイアログボックスが表示されます。
あなたは次を観察することができます-
- データモデルで選択したテーブルの名前が[テーブル名]ボックスに表示されます。
- 外部データソース内の対応するテーブルの名前が[ソース名]ボックスに表示されます。
- カラム名には、ソースとモーダルの2つのオプションがあります。
- データソースとデータモデルで列の名前が異なる場合、これらのオプションを選択して、2つの列名セットを切り替えることができます。
- 選択したテーブルのプレビューがダイアログボックスに表示されます。
次を編集できます-
- データソースとして使用されるテーブルを変更するには、[ソース名]ドロップダウンリストで選択したテーブルとは異なるテーブルを選択します。
- 必要に応じて列マッピングを変更します-
- ソースには存在するがデータモデルには存在しない列を追加するには、列名の横にあるチェックボックスを選択します。 追加するすべての列について繰り返します。 実際のデータは、次に更新するときにデータモデルにロードされます。
- データモデルの一部の列が現在のデータソースで使用できなくなった場合、通知領域に無効な列をリストするメッセージが表示されます。 あなたは何もする必要はありません。
- [保存]ボタンをクリックします。
テーブルプロパティの現在のセットを保存すると、メッセージが表示されます。お待ちください。 次に、取得した行の数が表示されます。
データモデルのテーブルでは、無効な列は自動的に削除され、新しい列が追加されます。
列名とデータ型の変更
あなたは次のようにデータモデルのテーブル内の列の名前を変更することができます-
- 列のヘッダーをダブルクリックします。 ヘッダーの列の名前が強調表示されます。
- 新しい列名を入力し、古い名前を上書きします。 または、次のようにデータモデルのテーブルの列の名前を変更できます。
- ヘッダーをクリックして列を選択します。
- 列を右クリックします。
- ドロップダウンリストで[列名の変更]をクリックします。
ヘッダーの列の名前が強調表示されます。 新しい列名を入力し、古い名前を上書きします。
学習したとおり、データモデルのテーブルの列の値はすべて同じデータ型である必要があります。
列のデータ型を変更するには、次を行います-
- ヘッダーをクリックして、変更する列を選択します。
- リボンの[ホーム]タブをクリックします。
- [書式設定]グループのコントロールをクリックして、列のデータ型と書式を変更します。
データソースへのフィルターの追加/変更
データをインポートするときにデータソースにフィルターを追加して、データモデルのテーブルの行数を制限できます。 後で、前に定義したフィルターを変更して、データモデルのテーブルに行を追加したり、行数を減らしたりできます。
インポート中にデータソースにフィルターを追加する
データのインポート中にデータソースに新しいフィルターを追加するには、次を行います-
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- [外部データの取得]グループのいずれかのデータソースをクリックします。
テーブルインポートウィザードダイアログボックスが表示されます。
- ステップに進む–テーブルとビューを選択します。
- テーブルを選択し、[プレビューとフィルター]をクリックします。
選択したテーブルのプレビューダイアログボックスが表示されます。
- フィルターを適用する列をクリックします。
- 列見出しの右側にある下矢印をクリックします。
フィルタを追加するには、次のいずれかを行います-
- 列の値のリストで、フィルタリングする1つ以上の値を選択またはクリアして、[OK]をクリックします。 +ただし、値の数が非常に多い場合、個々のアイテムがリストに表示されない場合があります。 代わりに、「表示するアイテムが多すぎます」というメッセージが表示されます。
- (列のデータ型に応じて)[数値フィルター]または[テキストフィルター]をクリックします。
- 次に、比較演算子コマンド(等号など)のいずれかをクリックするか、[カスタムフィルター]をクリックします。 [カスタムフィルター]ダイアログボックスで、フィルターを作成し、[OK]をクリックします。
注-いずれかの段階で間違いを犯した場合は、[行フィルターのクリア]ボタンをクリックしてやり直してください。
- OKをクリックしてください。 テーブルインポートウィザードの[テーブルとビューの選択]ページに戻ります。
ご覧のとおり、「フィルターの詳細」列に、フィルターを定義した列の「適用されたフィルター」リンクが表示されます。
リンクをクリックして、ウィザードで作成されたフィルター式を表示できます。 ただし、各フィルター式の構文はプロバイダーによって異なり、編集することはできません。
- [完了]をクリックして、フィルターを適用したデータをインポートします。
- テーブルインポートウィザードを閉じます。
既存のデータソースへのフィルターの変更
データをインポートした後、さらに行を追加するか、テーブル内の既存の行を制限することにより、時々更新する必要があります。 このような場合、テーブルの既存のフィルターを変更するか、新しいフィルターを追加できます。
- PowerPivotウィンドウのリボンの[ホーム]タブをクリックします。
- [外部データの取得]グループの[既存の接続]をクリックします。 [既存の接続]ダイアログボックスが表示されます。
- フィルタを変更する必要があるテーブルを含む接続をクリックします。
- [開く]ボタンをクリックします。
[テーブルのインポートウィザード]ダイアログボックスが表示されます。 前のセクションの手順を繰り返して、列をフィルタリングします。
Excel DAX-DAX数式の再計算
- DAX数式の再計算*は、データの変更と数式自体の変更を反映するために必要です。 ただし、DAX数式の再計算にはパフォーマンスコストが伴います。
それでも、正確な結果を得るには、再計算が不可欠です。 再計算中に列の依存関係がチェックされ、列が変更された場合、データが無効な場合、または以前使用していたDAX数式にエラーが発生した場合に通知されます。
再計算の種類
DAX式を再計算するための2つのオプションがあります-
- 自動再計算モード(デフォルト)
- 手動再計算モード
既定では、Power Pivotは処理に必要な時間を最適化しながら、必要に応じて自動的に再計算します。 ただし、複雑な数式または非常に大きなデータセットを使用していて、更新のタイミングを制御する場合は、計算を手動で更新することを選択できます。
DAX数式を再計算する自動モードと手動モードの両方に利点があります。 ただし、推奨される方法は自動再計算モードを使用することです。 このようにして、Power Pivotデータの同期を維持し、データの削除、名前やデータ型の変更、依存関係の欠落に起因する問題を防ぐことができます。
DAX数式を自動的に再計算する
DAX数式の再計算のデフォルトモードを選択した場合、つまり 自動的に再計算すると、DAX数式の結果を変更するデータの変更は、DAX数式を含む列全体の再計算をトリガーします。
次の変更は、常にDAX式の再計算を必要とします-
- 外部データソースからの値が更新されました。
- DAX数式自体が変更されます。
- DAX数式で参照されるテーブルまたは列の名前が変更されました。
- テーブル間の関係が追加、変更、または削除されました。
- 新しい計算フィールドまたは計算列が追加されました。
- ブック内の他のDAX数式に変更が加えられているため、それらのDAX数式に依存する列または計算を再計算する必要があります。
- テーブルで行が挿入または削除されました。
- データセットを更新するクエリの実行を必要とするフィルターを適用しました。 フィルターは、DAX数式で、またはピボットテーブルまたはピボットグラフの一部として適用できます。
手動再計算モードを使用する場合
ブックに必要なすべてのDAX数式を準備するまで、手動再計算モードを使用できます。 これにより、まだドラフト状態にあるワークブックで数式の結果を計算するコストを回避できます。
あなたは、次の条件でDAX式の手動再計算を使用することができます-
- テンプレートを使用してDAX数式を設計しており、検証する前にDAX数式で使用される列とテーブルの名前を変更したい。
- ブック内の一部のデータが変更されていることはわかっていますが、変更されていない別の列で作業しているため、再計算を延期します。
- 多くの依存関係があるワークブックで作業しており、必要な変更がすべて行われたことを確認するまで再計算を延期します。
ただし、ブックが手動の再計算モードに構成されている限り、数式の検証やチェックは実行されないことに注意してください。 これは次のようになります-
- ブックに追加した新しい数式には、エラーを含むものとしてフラグが付けられます。
- 新しい計算列には結果は表示されません。
手動再計算のためのワークブックの構成
学習したように、ワークブックのデータモデルでは、自動再計算がデフォルトモードです。 手動で再計算するためのワークブックを構成するには、次を行います-
- Power Pivotウィンドウのリボンの[デザイン]タブをクリックします。
- [計算]グループの[計算オプション]をクリックします。
- ドロップダウンリストで[手動計算モード]をクリックします。
DAX数式を手動で再計算する
DAX式を手動で再計算するには、次を行います-
- Power Pivotウィンドウのリボンの[デザイン]タブをクリックします。
- [計算]グループの[計算オプション]フィールドをクリックします。
- ドロップダウンリストの[今すぐ計算]フィールドをクリックします。
DAX数式の再計算のトラブルシューティング
ブックのデータモデルで変更が発生するたびに、Power Pivotは既存のデータの分析を実行して、再計算が必要かどうかを判断し、可能な限り最も効率的な方法で更新を実行します。
Power Pivotは、DAX数式の再計算中に以下を処理します-
- 依存関係
- 従属列の再計算のシーケンス
- トランザクション
- 揮発性関数の再計算
依存関係
列が別の列に依存し、その他の列の内容が何らかの方法で変更されると、関連するすべての列の再計算が必要になる場合があります。
Power Pivotは、テーブルの完全な再計算を常に実行します。完全な再計算は、変更された値をチェックするよりも効率的だからです。 再計算をトリガーする変更には、列の削除、列の数値データ型の変更、または新しい列の追加が含まれます。 これらの変更は大きな変更と見なされます。 ただし、列の名前を変更するなど、一見些細な変更でも再計算がトリガーされる場合があります。 これは、列の名前がDAX式の識別子として使用されるためです。
場合によっては、Power Pivotは列を再計算から除外できると判断する場合があります。
依存列の再計算のシーケンス
依存関係は、再計算の前に計算されます。 相互に依存する列が複数ある場合、Power Pivotは依存関係のシーケンスに従います。 これにより、列が正しい順序で最大速度で処理されることが保証されます。
トランザクション
データを再計算または更新する操作は、トランザクションとして実行されます。 つまり、更新操作の一部が失敗すると、残りの操作はロールバックされます。 これは、データが部分的に処理された状態のままにならないようにするためです。 ただし、リレーショナルデータベースで行うようにトランザクションを管理したり、チェックポイントを作成したりすることはできません。
揮発性関数の再計算
NOW、RAND、またはTODAYなどのDAX関数には固定値がなく、volatile関数と呼ばれます。 このようなDAX関数が計算列で使用される場合、クエリまたはフィルタリングの実行により、通常、パフォーマンスの問題を回避するためにそれらが再評価されることはありません。
これらのDAX関数の結果は、列全体が再計算されたときにのみ再計算されます。 これらの状況には、外部データソースからの更新、またはこれらの関数を含むDAX数式の再評価を引き起こすデータの手動編集が含まれます。
ただし、そのような関数は、計算フィールドの定義で使用される場合、常に再計算されます。
Excel DAX-数式エラー
間違った構文で* DAX数式*を作成すると、エラーが発生する可能性があります。 計算フィールドと計算列には、特定の種類の引数を必要とするDAX関数を含めることができます。 DAX関数の引数には、テーブル、列、または他のDAX関数(ネストされたDAX関数)を使用できます。 DAX関数はテーブルと列を返すことができるため、正しいタイプの引数がDAX関数に渡されることを確認するように注意する必要があります。
DAX式エラーは、構文エラーまたはセマンティックエラーのいずれかです。 エラーは、設計時または実行時に発生する可能性があります。
この章では、一般的なDAXエラー、その原因、およびそれらのエラーの修正方法について学習します。
DAXエラー:計算は中止されました
DAXタイムインテリジェンス関数で計算フィールドを作成(設計時)または使用(実行時)しようとすると、次のエラーが発生する可能性があります。 いずれの場合も、不連続な日付範囲がタイムインテリジェンス機能に渡されています。
「DAXエラー:計算は中止されました:MdxScript(インスタンス)(00、0)関数「DATEADD」は、連続した日付選択でのみ機能します。」
実行時の原因
このエラーは、DAXタイムインテリジェンス関数を使用した計算フィールドがピボットテーブルのVALUES領域に配置され、年や月を選択する前にスライサーまたはフィルターとして日付フィールドが選択されている場合に表示されます。 たとえば、2014年、2015年、2016年の3年のデータがあり、Yearフィールドを選択せずに月のみを使用しようとすると、値は連続したデータ値ではなく、エラーが発生します。
実行時のエラーを修正する方法は?
上記の例では、
- 最初にYearをスライサーまたはフィルターとして追加し、年を選択します。
- 次に、月または四半期をスライサーまたはフィルターとして追加します。
- 次に、選択した年のスライスまたはフィルターを適用する1つ以上の月または四半期を選択します。
設計時の原因
DAXタイムインテリジェンス関数では、date引数に指定された日付列が必要です。 日付列には、連続した日付範囲が必要です。 日付列の1つ以上の行に、前の行と連続する行のデータ値と連続していない日付値がある場合、このエラーが返される可能性があります。
データソースから日付を含むテーブルをインポートした場合、多くの組織がデータベース内のテーブルで無効な値をスキャンし、特定の値に置き換える特別なプロセスを実行することに注意してください。 つまり、無効な日付が見つかった場合、列内の他のデータ値と連続していない可能性がある特定の日付値が割り当てられます。
設計時にこのエラーを修正する方法は?
設計時のエラーを修正するには、次を実行します-
- 日付テーブルをデータソースからインポートする場合は、Power Pivotウィンドウの[更新]を使用して、ソースで見つかった変更を再インポートします。
- 日付列の値をチェックして、連続した順序になっていることを確認します。 値が設定されていないことが判明した場合、ソースで修正する必要があり、日付テーブルを更新する必要があります。
- データモデルに別の日付テーブルと日付列を作成します。 エラーの原因となっている式の日付引数として新しい日付列を指定します。 日付テーブルは簡単に作成してデータモデルに追加できます。
DAXセマンティックエラー-例
次のDAXエラーはセマンティックエラーです-
「テーブルフィルター式として使用されるtrue-false式で関数「CALCULATE」が使用されています。 これは許可されていません。」
原因
このエラーは、1つ以上のフィルター式を計算フィールドまたは計算列式のコンテキストで使用できない場合に表示される可能性があります。
ほとんどの場合、このエラーは、DAX CALCULATE関数の引数として指定されたフィルター式が原因です。 CALCULATE関数には、ブール式またはテーブル式として定義されたフィルターが必要です。
このようなエラーを修正する方法は?
このようなエラーを修正するには、DAX FILTER関数を使用してフィルターをテーブル式として定義し、それをDAX CALCULATE関数の引数として使用できます。
Excel DAX-タイムインテリジェンス
DAXには、 Time Intelligence と呼ばれる重要で強力な機能があります。 タイムインテリジェンスを使用すると、ピボットテーブルで使用する期間を参照するDAX数式を作成できます。
DAXには、時間の経過に伴うデータの集計と比較のために、35の時間インテリジェンス機能があります。 ただし、これらのDAX関数には、エラーを避けるために理解して注意して作業する必要があるデータに対する制約がいくつかあります。
タイムインテリジェンスがDAXを強力にする理由
タイムインテリジェンス機能は、ピボットテーブルとPower Viewの視覚化で選択したコンテキストに応じて、常に変化するデータを処理します。 ご存知のように、ほとんどのデータ分析には、一定期間にわたるデータの要約、一定期間にわたるデータ値の比較、傾向の理解、将来の予測に基づいた意思決定が含まれます。
たとえば、過去1か月の売上高を製品ごとに合計し、合計を会計年度の他の月の合計と比較することができます。 つまり、特定の期間の販売トランザクションをグループ化および集計する方法として日付を使用する必要があります。
ここで、DAXの威力を観察できます。 DAXタイムインテリジェンス関数を使用して、ピボットテーブルの日付選択を変更することなく、データを長期にわたって分析するのに役立つ計算フィールドを定義できます。 これにより、作業が簡単になります。 さらに、他の方法では不可能なピボットテーブルを構築できます。
DAXタイムインテリジェンス関数の要件
DAXタイムインテリジェンス関数には特定の要件があります。 これらの要件が満たされていない場合、エラーが発生するか、正しく機能しない可能性があります。 したがって、これらの要件をルールまたは制約と呼ぶこともできます。 以下は、特定のDAXタイムインテリジェンス機能の要件/ルール/制約です-
- データモデルに日付テーブルが必要です。
- 日付テーブルには、DAXによって日付列と見なされる列が含まれている必要があります。 列には任意の名前を付けることができますが、次の条件に準拠する必要があります。o日付列には、データを分析している期間の毎日をカバーする連続した日付セットを含める必要があります。
- すべての日付は、日付列に一度だけ存在する必要があります。
- 日付をスキップすることはできません(例: 週末の日付をスキップすることはできません)。
- DAXタイムインテリジェンス機能は、標準カレンダーでのみ機能し、年の始まりを1月1日、年の終わりを12月31日、年の月と各月の日を暦年とします。
ただし、会計年度ごとに標準カレンダーをカスタマイズできます。 タイムインテリジェンス機能を使用する前に、上記の要件を確認することをお勧めします。
日付テーブルとDAX数式でのその使用法の詳細については、このチュートリアルライブラリのチュートリアル= DAXを使用したデータモデリングを参照してください。
DAXタイムインテリジェンス関数-カテゴリ
DAXタイムインテリジェンス機能は次のように分類することができます-
- 単一の日付を返すDAX関数。
- 日付のテーブルを返すDAX関数。 *一定期間にわたって式を評価するDAX関数。
単一の日付を返すDAX関数
このカテゴリのDAX関数は、単一の日付を返します。
このカテゴリには10のDAX機能があります-
Sr.No. | DAX Function & Return Value |
---|---|
1 |
現在のコンテキストのDate_Columnの最初の日付を返します。 |
2 |
LASTDATE (Date_Column) 現在のコンテキストのDate_Columnの最後の日付を返します。 |
3 |
FIRSTNONBLANK (Date_Column, Expression) 式に空白以外の値がある最初の日付を返します。 |
4 |
LASTNONBLANK (Date_Column, Expression) 式に空白以外の値がある最後の日付を返します。 |
5 |
STARTOFMONTH (Date_Column) 現在のコンテキストの月の最初の日付を返します。 |
6 |
ENDOFMONTH (Date_Column) 現在のコンテキストの月の最後の日付を返します。 |
7 |
STARTOFQUARTER (Date_Column) 現在のコンテキストで四半期の最初の日付を返します。 |
8 |
ENDOFQUARTER (Date_Column) 現在のコンテキストの四半期の最終日を返します。 |
9 |
STARTOFYEAR (Date_Column, [YE_Date]) 現在のコンテキストの年の最初の日付を返します。 |
10 |
ENDOFYEAR (Date_Column, [YE_Date]) 現在のコンテキストでの年の最後の日付を返します。 |
日付のテーブルを返すDAX関数
このカテゴリのDAX関数は、日付のテーブルを返します。 これらの関数は、主にDAX関数のCALCULATEのSetFilter引数として使用されます。
このカテゴリには16個のDAX関数があります。 これらの8つのDAX関数は、「前の」関数と「次の」関数です。
- 「前の」および「次の」関数は、現在のコンテキストの日付列で始まり、前または次の日、月、四半期、または年を計算します。
- 「前の」関数は現在のコンテキストの最初の日付から後方に機能し、「次の」関数は現在のコンテキストの最後の日付から前方に移動します。 *「前の」および「次の」関数は、結果の日付を単一の列テーブルの形式で返します。
Sr.No. | DAX Function & Return Value |
---|---|
1 |
現在のコンテキストのDate_Columnの最初の日付より前の日を表すすべての日付の列を含むテーブルを返します。 |
2 |
NEXTDAY (Date_Column) 現在のコンテキストのDate_Columnで指定された最初の日付に基づいて、翌日のすべての日付の列を含むテーブルを返します。 |
3 |
PREVIOUSMONTH (Date_Column) 現在のコンテキストのDate_Columnの最初の日付に基づいて、前月のすべての日付の列を含むテーブルを返します。 |
4 |
NEXTMONTH (Date_Column) 現在のコンテキストのDate_Columnの最初の日付に基づいて、翌月のすべての日付の列を含むテーブルを返します。 |
5 |
PREVIOUSQUARTER (Date_Column) 現在のコンテキストのDate_Columnの最初の日付に基づいて、前四半期のすべての日付の列を含むテーブルを返します。 |
6 |
NEXTQUARTER (Date_Column) 現在のコンテキストのDate_Columnで指定された最初の日付に基づいて、次の四半期のすべての日付の列を含むテーブルを返します。 |
7 |
PREVIOUSYEAR (Date_Column, [YE_Date]) 現在のコンテキストのDate_Columnの最後の日付を指定すると、前年のすべての日付の列を含むテーブルを返します。 |
8 |
NEXTYEAR (Date_Column, [YE_Date]) 現在のコンテキストのDate_Columnの最初の日付に基づいて、翌年のすべての日付の列を含むテーブルを返します。 |
4つのDAX関数は、期間内の一連の日付を計算します。 これらの関数は、現在のコンテキストの最後の日付を使用して計算を実行します。
Sr.No. | DAX Function & Return Value |
---|---|
1 |
DATESMTD (Date_Column) 現在のコンテキストで、今月の日付の列を含むテーブルを返します。 |
2 |
DATESQTD (Date_Column) 現在のコンテキストで、これまでの四半期の日付の列を含むテーブルを返します。 |
3 |
DATESYTD (Date_Column, [YE_Date]) 現在のコンテキストで、年間の日付の列を含むテーブルを返します。 |
4 |
SAMEPERIODLASTYEAR (Date_Column) 現在のコンテキストで、指定されたDate_Columnの日付から1年前にシフトした日付の列を含むテーブルを返します。 注-SAMEPERIODLASTYEARでは、現在のコンテキストに連続した日付セットが含まれている必要があります。 現在のコンテキストが連続した日付のセットではない場合、SAMEPERIODLASTYEARはエラーを返します。 |
- 4つの(4)DAX関数を使用して、現在のコンテキストにある日付のセットから新しい日付のセットにシフトします。 +これらのDAX関数は、以前のものよりも強力です。
- DAX関数– DATEADD、DATESINPERIOD、およびPARALLELPERIODは、現在のコンテキストからいくつかの時間間隔をシフトします。 間隔は日、月、四半期、または年で、それぞれキーワードDAY、MONTH、QUARTER、YEARで表されます。 例えば:
- 2日前にシフトします。
- 5か月先に進みます。
- 今日から1か月先に進みます。
- 昨年の同じ四半期に戻ります。 *DAX関数– DATESBETWEENは、指定された開始日から終了日までの一連の日付を計算します。
Sr.No. | DAX Function & Return Value |
---|---|
1 |
現在のコンテキストの日付から指定された間隔数だけ時間を前後にシフトした日付の列を含むテーブルを返します。 |
2 |
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval) start_dateで始まり、指定されたnumber_of_intervalsの間続く日付の列を含むテーブルを返します。 |
3 |
PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval) 現在のコンテキストで指定されたDate_Columnの日付に並行する期間を表す日付の列を含むテーブルを返します。日付は、時間を前後にいくつかの間隔でシフトします。 |
4 |
DATESBETWEEN (Date_Column, Start_Date, End_Date) start_dateで始まりend_dateまで続く日付の列を含むテーブルを返します。 |
一定期間にわたって式を評価するDAX関数
このカテゴリのDAX関数は、指定された期間にわたって式を評価します。
このカテゴリには9つのDAX関数があります-
Sr.No. | DAX Function & Return Value |
---|---|
1 |
現在のコンテキストで、今月の日付の式の値を評価します。 |
2 |
TOTALQTD (Expression, Date_Column, [SetFilter]) 現在のコンテキストで、これまでの四半期の日付の式の値を評価します。 |
3 |
TOTALYTD (Expression, Date_Column, [SetFilter], [YE_Date]) 現在のコンテキストで、年の日付の式の値を評価します |
- このカテゴリの6つのDAX関数を使用して、期首残高と期末残高を計算できます。
- 任意の期間の期首残高は、前の期間の期末残高と同じです。
- 期末残高には期間の終わりまでのすべてのデータが含まれますが、期首残高には現在の期間内のデータは含まれません。
- これらのDAX関数は、特定の時点で評価された式の値を常に返します。
- 私たちが気にするのは、常にカレンダー期間の最後の可能な日付値です。
- 期首残高は前期間の最終日に基づいており、期末残高は現在の期間の最終日に基づいています。 *現在の期間は、常に現在の日付コンテキストの最後の日付によって決定されます。
Sr.No. | DAX Function & Return Value |
---|---|
1 |
現在のコンテキストの月の最初の日付で式を評価します。 |
2 |
CLOSINGBALANCEMONTH (Expression, Date_Column, [SetFilter]) 現在のコンテキストの月の最後の日付で式を評価します。 |
3 |
OPENINGBALANCEQUARTER (Expression, Date_Column, [SetFilter]) 現在のコンテキストで、四半期の最初の日付で式を評価します。 |
4 |
CLOSINGBALANCEQUARTER (Expression, Date_Column, [SetFilter]) 現在のコンテキストで四半期の最後の日付の式を評価します。 |
5 |
OPENINGBALANCEYEAR (Expression, Date_Column, [SetFilter], [YE_Date]) 現在のコンテキストの年の最初の日付で式を評価します。 |
6 |
CLOSINGBALANCEYEAR (Expression, Date_Column, [SetFilter], [YE_Date]) 現在のコンテキストの年の最後の日付で式を評価します。 |
Excel DAX-フィルター関数
DAXには、Excel関数とはまったく異なる強力な*フィルター関数*があります。 ルックアップ関数は、データベースのようなテーブルとリレーションシップを使用して機能します。 フィルタリング関数を使用すると、データコンテキストを操作して動的な計算を作成できます。
注意-テーブルを返すDAXフィルター関数は、データモデルにテーブルを追加しません。 結果のテーブルは、別のDAX関数の引数として使用されます。 つまり、そのようなDAX関数は、他のDAX関数と共にネストされた関数として使用されます。
次のセクションでは、使用できるDAXフィルター関数を学習します。 これらの関数の詳細については、チュートリアル-このチュートリアルライブラリのDAX関数を参照してください。
DAXフィルター関数
以下はDAXフィルター機能です-
Sr.No. | DAX Function & What the Function Does? |
---|---|
1 |
ADDMISSINGITEMS (<showAllColumn>, [<showAllColumn>] …, <table>, <groupingColumn>, [<groupingColumn>] …, [filterTable] …) 複数の列の項目の組み合わせがまだ存在しない場合、それらをテーブルに追加します。 追加するアイテムの組み合わせの決定は、列のすべての可能な値を含むソース列の参照に基づきます。 評価するために異なる列から項目の組み合わせを決定するには-
|
2 |
|
<column>, [<column>], [<column>], … })* 指定されたテーブルのすべての行、またはテーブルの指定された列のすべての値を返します。適用されたフィルターは無視されます。 この関数は、フィルターをクリアし、テーブル内のすべての行で計算を作成するのに役立ちます。 |
3 |
ALLEXCEPT (<table>, <column>, [<column>], …) 引数として指定された列に適用されたフィルターを除く、テーブル内のすべてのコンテキストフィルターを削除します。 ALLに対して、テーブル内のすべてではないが多くの列のフィルターを削除する場合、この関数を使用できます。 |
4 |
*ALLNOBLANKROW (<table> |
<column>)* 関係の親テーブルから、戻ります-
この関数は、存在する可能性があるコンテキストフィルターを無視します。 |
5 |
|
<columnName>] )* 他のすべてのコンテキストフィルターまたは明示的なフィルターを保持しながら、現在のクエリの列と行からコンテキストフィルターを削除します。 |
6 |
CALCULATE (<expression>, [<filter1>, <filter2> …)] 指定されたフィルターによって変更されるコンテキスト内の式を評価します。 式の結果である値を返します。 |
7 |
CALCULATETABLE (<expression>, <filter1>, <filter2>, …) 指定されたフィルターによって変更されたコンテキストでテーブル式を評価します。 値の表を返します。 |
8 |
CROSSFILTER (<columnName1>, <columnName2>, <direction>) 2つの列の間に存在する関係の計算で使用されるクロスフィルター方向を指定します。 値を返しません。 |
9 |
DISTINCT (<column>) 指定された列の個別の値を含む1列のテーブルを返します。 つまり、重複する値は削除され、一意の値のみが返されます。 結果の列は、別のDAX関数の引数として使用されます。 |
10 |
EARLIER (<column>, <number>) 番号で指定された言及された列の外側の評価パスで、指定された列の現在の値を返します。 |
11 |
EARLIEST (<column>) 指定した列の外部評価パスで指定した列の現在の値を返します。 |
12 |
FILTER (<table>, <filter>) フィルター処理された行のみを含むテーブルを返します。 FILTERは、引数としてテーブルを必要とする他の関数に埋め込まれている関数としてのみ使用されます。 |
13 |
FILTERS (<columnName>) columnNameにフィルターとして直接適用される値を返します。 FILTERSは、引数としてテーブルを必要とする他の関数に埋め込まれた関数としてのみ使用されます。 |
14 |
HASONEFILTER (<columnName>) columnNameで直接フィルタリングされた値の数が1の場合、TRUEを返します。 それ以外の場合は、FALSEを返します。 |
15 |
HASONEVALUE (<columnName>) columnNameのコンテキストが1つの異なる値のみにフィルターされている場合、TRUEを返します。 それ以外の場合は、FALSEを返します。 |
16 |
ISCROSSFILTERED (<columnName>) columnNameまたは同じテーブルまたは関連テーブルの別の列がフィルタリングされている場合、TRUEを返します。 |
17 |
ISFILTERED (<columnName>) columnNameが直接フィルタリングされている場合、TRUEを返します。 列にフィルターがない場合、または同じテーブルまたは関連テーブルの別の列がフィルター処理されているためにフィルター処理が発生する場合、関数はFALSEを返します。 |
18 |
KEEPFILTERS (<expression>) CALCULATEまたはCALCULATETABLE関数の評価中にフィルターが適用される方法を変更します。 |
19 |
RELATED (<column>) 別のテーブルから関連する値を返します。 |
20 |
RELATEDTABLE (<tableName>) 指定されたフィルターによって変更されたコンテキストでテーブル式を評価します。 |
21 |
SUBSTITUTEWITHINDEX (<table>, <indexColumnName>, <indexColumnTable>, <orderBy_expression>, [<order>]) 引数として提供された2つのテーブルの左半結合を表すテーブルを返します。 準結合は、共通の列名と共通のデータ型によって決定される共通の列を使用して実行されます。 結合されている列は、整数型でインデックスを含む返されたテーブル内の単一の列に置き換えられます。 インデックスは、指定された並べ替え順序が指定された右結合テーブルへの参照です。 |
22 |
USERELATIONSHIP ( <columnName1>,<columnName2>) columnName1とcolumnName2の間に存在する関係として、特定の計算で使用される関係を指定します。 |
23 |
Excel DAX-シナリオ
前の章で、DAX構文、DAX演算子およびDAX関数の使用方法を学習しました。 ご存じのとおり、DAXはデータモデリングとデータ分析に使用される式言語です。
DAXはさまざまなシナリオで使用できます。 DAXシナリオに基づいて、DAXはパフォーマンスを最適化し、正確で効果的な結果を生成します。 この章では、DAXシナリオのいくつかを理解します。
複雑な計算の実行
DAX数式は、カスタム集計、フィルタリング、および条件値の使用を伴う複雑な計算を実行できます。 DAXで次のことができます
- ピボットテーブルのカスタム計算を作成します。
- 数式にフィルターを適用します。
- フィルタを選択的に削除して、動的な比率を作成します。
- 外側のループの値を使用します。
詳細については、「シナリオ-複雑な計算の実行」の章を参照してください。
テキストと日付の使用
DAXは、テキストの操作、日付と時刻の値の抽出と構成、または条件に基づいた値の作成を含むシナリオで使用できます。 あなたはDAXで次のことができます-
- 連結によってキー列を作成します。
- テキスト日付から抽出された日付部分に基づいて日付を作成します。
- カスタム日付を定義します。
- 数式を使用してデータ型を変更します。
- 実数を整数に変換します。
- 実数、整数、または日付を文字列に変換します。
- 文字列を実数または日付に変換します。
詳細については、「シナリオ-テキストと日付の操作」の章を参照してください。
条件値とエラーのテスト
DAX関数を使用すると、データ内の値をテストし、条件に基づいて異なる値を返すことができます。 値をテストするDAX関数は、予期しないデータエラーによって計算が中断されるのを防ぐために、値の範囲またはタイプをチェックするのにも役立ちます。 あなたはDAXで次のことができます-
- 条件に基づいて値を作成します。
- 数式内のエラーをテストします。
詳細については、「シナリオ-条件値とエラーのテスト」の章を参照してください。
タイムインテリジェンスの使用
DAXタイムインテリジェンスの章で、DAXタイムインテリジェンス関数について学習しました。
DAXタイムインテリジェンス関数には、データから日付または日付範囲を取得するのに役立つ関数が含まれています。 次に、これらの日付または日付範囲を使用して、同様の期間の値を計算できます。 タイムインテリジェンス関数には、標準の日付間隔で機能する関数も含まれており、月、年、または四半期の値を比較できます。 指定した期間の最初の日付と最後の日付の値を比較するDAX数式を作成することもできます。
あなたは、DAXインテリジェンス機能とそれらが以下のために何ができるかについて学ぶことができます-
- 累積売上を計算します。
- 経時的な値の比較。
- カスタムの日付範囲で値を計算します。
詳細については、「シナリオ-タイムインテリジェンスの使用」の章を参照してください。
値のランク付けと比較
あなたが列またはピボットテーブルのアイテムの上位n個のみを表示したい場合は、次のオプションがあります-
- フィルターを適用して、上位または下位のいくつかのアイテムのみを表示します。
- 値を動的にランク付けし、フィルターを適用するDAX数式を作成します。
これらのオプションにはそれぞれ長所と短所があります。
詳細については、「シナリオ-値のランキングと比較」の章を参照してください。
Excel DAX-複雑な計算の実行
DAX数式は、カスタム集計、フィルタリング、および条件値の使用を伴う複雑な計算を実行できます。 あなたはDAXで次のことができます-
- ピボットテーブルのカスタム計算を作成します。
- DAX数式にフィルターを適用します。
- フィルタを選択的に削除して、動的な比率を作成します。
- 外側のループの値を使用します。
ピボットテーブルのカスタム計算の作成
DAX関数CALCULATEおよびCALCULATETABLEは強力で柔軟です。 計算フィールドの定義に役立ちます。 これらのDAX関数を使用すると、計算が実行されるコンテキストを変更できます。 実行する集計または数学演算のタイプをカスタマイズすることもできます。
CALCULATE関数
計算(<式>、[<フィルター1>]、[<フィルター2>]…)
CALCULATE関数は、指定された0個以上のフィルターによって変更されたコンテキストで、指定された式を評価します。
データがフィルター処理されている場合、CALCULATE関数はデータがフィルター処理されるコンテキストを変更し、フィルターで指定した新しいコンテキストで式を評価します。 つまり、指定した列の既存のフィルターはすべて削除され、代わりにフィルター引数で使用されているフィルターが適用されます。
例
国名でスポーツ的にフィルタリングされたメダルの割合を表示するとします。 計算では、ピボットテーブルのCountryに適用するフィルターをオーバーライドするパーセント値を取得する必要があります。
- 次のスクリーンショットに示すように、計算フィールド-メダル数の割合を定義します。
このDAX式では、ALL関数を含むフィルターを使用して、結果テーブルのすべての行がCALCULATE関数で考慮されます。 このように、分母に合計カウントがあります。
ピボットテーブルは、次のスクリーンショットのようになります。
上記のスクリーンショットでは、CountryはUSAにフィルターされ、Top18の値がピボットテーブルに表示されています。 次に、ピボットテーブルで値を動的にフィルター処理できます。 ただし、計算は、使用したカスタムDAX数式によって正確になります。
CALCULATETABLE関数は値のテーブルを取得し、CALCULATE関数と同じアクションを実行します。
数式でのデータのフィルタリング
DAX数式内にフィルターを作成して、計算で使用するソースデータから値を選択できます。 これを行うには、フィルター式を定義し、それをDAX数式への入力であるテーブルと共に使用します。
フィルター式を使用すると、ソースデータのサブセットを取得できます。 フィルターは、データの現在のコンテキストに応じて、DAX数式の結果を更新するたびに動的に適用され、正確で期待される結果を保証できます。
通常、フィルター式には、テーブルの選択された行のみを返すDAXフィルター関数が含まれており、データ集計に使用している別のDAX関数の引数として使用できます。
例
次のスクリーンショットは、夏季スポーツのメダルカウントのみを提供する計算フィールドの定義を示しています。
この計算フィールドでは、ピボットテーブルは次のスクリーンショットに示すようになります。
ご覧のように、新しい計算フィールドを持つ右側のピボットテーブルの値は、明示的に季節フィールドのフィルターを適用した左側のピボットテーブルの値と一致します。
注意-DAXフィルターおよび値関数はテーブルを返しますが、テーブルまたは行を直接データモデルに返さないため、常に別のDAX関数に埋め込まれます。
これらのDAX関数の詳細については、「DAXフィルター関数」の章を参照してください。
フィルターの動的な追加と削除
ピボットテーブルで使用するDAX数式は、ピボットテーブルコンテキストの影響を受ける可能性があります。 ただし、フィルターを追加または削除して、コンテキストを選択的に変更できます。 DAX関数ALLおよびALLEXCEPTを使用して、ピボットテーブルコンテキストに関係なく行を動的に選択できます。
さらに、個別の値を返すためにDAX関数DISTINCTおよびVALUESを使用できます。
外部ループの値を使用する
DAX EARLIER関数を使用して関連する一連の計算を作成する際に、前のループの値を使用できます。 このDAX関数は、最大2レベルのネストされたループをサポートします。
Excel DAX-テキストと日付の操作
DAXは、テキストの操作、日付と時刻の値の抽出と構成、または条件に基づいた値の作成を含むシナリオで使用できます。 あなたはDAXで次のことができます-
- 連結によってテーブルにキー列を作成します。
- テキスト日付から抽出された日付部分に基づいて日付を作成します。
- カスタム日付形式を定義します。
- 数式を使用してデータ型を変更します。
- 実数を整数に変換します。
- 実数、整数、または日付を文字列に変換します。
- 文字列を実数または日付に変換します。
連結によるキー列の作成
PowerPivotのデータモデルでは、単一のキー列のみが許可されます。 外部データソースにあるかもしれない複合キーはサポートしていません。 したがって、データソースのテーブルに複合キーが存在する場合、それらをデータモデルのテーブルの単一のキー列に結合する必要があります。
DAX関数CONCATENATEを使用して、2つの列をデータモデルのテーブルの1つの列に結合できます。 DAX関数CONCATENATEは、2つのテキスト文字列を1つのテキスト文字列に結合します。 結合されるアイテムは、テキスト、数値、またはテキストとして表されるブール値、またはそれらのアイテムの組み合わせです。 列に適切な値が含まれている場合は、列参照を使用することもできます。
DAX CONCATENATE関数は、2つの引数のみを受け入れます。 引数のいずれかがテキストデータ型でない場合、テキストに変換されます。 DAX CONCATENATE関数は、連結された文字列を返します。
テキスト日付から抽出された日付部分に基づく日付
Power Pivotのデータモデルは、日付と時刻の値のデータ型datetimeをサポートします。 日付や時刻の値で機能するDAX関数では、引数にdatetimeデータ型が必要です。
データソースに異なる形式の日付が含まれている場合、最初にDAX数式を使用して日付部分を抽出し、それらの部分を組み合わせて有効なDAX日時データ型を構成する必要があります。
次のDAX関数を使用して、日付を抽出および構成できます-
カスタム日付形式の定義
データソースの日付が標準形式で表されていないとします。 カスタムの日付形式を定義して、値が正しく処理されるようにすることができます。 DAX FORMAT関数を使用すると、指定した形式に従って値をテキストに変換できます。
FORMAT関数は、format_stringで定義された形式の値を含む文字列を返します。
事前定義された日付と時刻の形式を使用するか、FORMAT関数の引数format_stringにユーザー定義の日付と時刻の形式を作成できます。
以下は、事前定義された日付と時刻の形式名です。 これらの事前定義された文字列以外の文字列を使用する場合、カスタムの日付と時刻の形式として解釈されます。
S. No. | Format_String & Description |
---|---|
1 |
"General Date" 日付や時刻を表示します。 たとえば、2/10/2015 10:10:32 AM |
2 |
"Long Date" or "Medium Date" 長い日付形式に従って日付を表示します。 たとえば、2016年3月7日水曜日 |
3 |
"Short Date" 短い日付形式を使用して日付を表示します。 たとえば、2016年2月3日 |
4 |
"Long Time" 長い時間形式を使用して時間を表示します。 通常、時間、分、秒が含まれます。 たとえば、10:10:32 AM |
5 |
"Medium Time" 12時間形式で時刻を表示します。 たとえば、09:30 PM |
6 |
"Short Time" 24時間形式で時刻を表示します。 たとえば、14:15 |
または、次の表の文字を使用して、ユーザー定義の日付/時刻形式を作成できます。
S. No. | Character & Description |
---|---|
1 |
: 時間区切り。 時間区切り。 時間値がフォーマットされるときに、時間、分、および秒を区切ります。 |
2 |
/ 日付区切り記号。 日付の値がフォーマットされる日、月、年を区切ります。 |
3 |
% 後続の文字に関係なく、次の文字を1文字形式として読み取る必要があることを示すために使用されます。 また、1文字形式がユーザー定義形式として読み取られることを示すためにも使用されます。 |
以下は、さまざまなキャラクターの詳細です。
- *%d *-先行ゼロなしで数値として日を表示します(例: 5).
- *%dd *-先行ゼロ付きの数値として日を表示します(例: 05).
- *%ddd *-曜日を略語で表示します(例: 太陽)。
- *%dddd *-曜日をフルネームで表示します(例: 日曜日)。
- *%M *-月を先行ゼロなしの数値として表示します(例: 1月は1)として表されます。
- *%MM *-月を先行ゼロ付きの数値として表示します(例: 1月は01)として表されます。
- *%MMM *-月を略語として表示します(例: 1月は1月として表されます)。
- *%MMMM *-完全な月名として月を表示します(例: 1月)。
- *%gg *-期間/時代の文字列を表示します(例: 広告。)。
- %h *-12時間制を使用して、先行ゼロなしで数値として時間を表示します(例: 1:15:15 PM)。 これがユーザー定義の数値形式で唯一の文字である場合は、%h *を使用します。
- *%hh *-12時間制を使用して、先頭にゼロを付けた数字として時間を表示します(例: 01:15:15 PM)。
- *%H *-24時間制を使用して、先行ゼロなしで数値として時間を表示します(例: 13:15:15、1:15:15)。 これがユーザー定義の数値形式で唯一の文字である場合は、%Hを使用します。
- *%HH *-24時間制を使用して、先頭にゼロを付けた数値として時間を表示します(例: 13:15:15、1:15:15)。
- *%m *-先行ゼロなしで数値として分を表示します(例: 2:1:15)。 これがユーザー定義の数値形式で唯一の文字である場合は、%mを使用します。
- *%mm *-分を先行ゼロ付きの数値として表示します(例: 2:01:15)。
- *%s *-先行ゼロなしで数値として秒を表示します(例: 2:15:5)。 これがユーザー定義の数値形式で唯一の文字である場合は、%sを使用します。
- *%ss *-秒を先行ゼロ付きの数値として表示します(例: 2:15:05)。
- %f *-秒の小数部を表示します。 例えば *ff は100分の1秒を表示しますが、 ffff は1万分の1秒を表示します。 ユーザー定義形式で最大7つの f シンボルを使用できます。 これがユーザー定義の数値形式で唯一の文字である場合は、*%f *を使用します。
- *%t *-12時間制を使用し、正午までの任意の時間に大文字のAを表示します。正午から午後11時59分までの任意の時間に大文字のPを表示します。 これがユーザー定義の数値形式で唯一の文字である場合は、%tを使用します。
- *%tt *-12時間制を使用するロケールの場合、正午までの任意の時刻を大文字のAMで表示しますは、正午から午後11時59分までの任意の時間で大文字のPMを表示します。 24時間制を使用するロケールでは、何も表示されません。
- %y *-先行ゼロなしで年数(0-9)を表示します。 これがユーザー定義の数値形式で唯一の文字である場合は、%y *を使用します。
- *%yy *-該当する場合、先頭にゼロを付けて2桁の数値形式で年を表示します。
- *%yyy *-年を4桁の数値形式で表示します。
- *%yyyy *-年を4桁の数値形式で表示します。
- %z *-先行ゼロなしでタイムゾーンオフセットを表示します(例: -8). これがユーザー定義の数値形式で唯一の文字である場合は、%z *を使用します。
- *%zz *-を表示します。 先行ゼロのタイムゾーンオフセット(例: -08)
- *%zzz *-完全なタイムゾーンオフセットを表示します(例: -08:00)。
ご覧のとおり、フォーマット文字列では大文字と小文字が区別されます。 異なるケースを使用することにより、異なるフォーマットを取得できます。
DAX数式出力のデータ型の変更
DAX数式では、出力のデータ型はソース列によって決定され、結果のデータ型を明示的に指定することはできません。 これは、最適なデータ型がPower Pivotによって決定されるためです。 ただし、Power Pivotによって実行される暗黙的なデータ型変換を使用して、出力データ型を操作できます。 それ以外の場合は、特定のDAX関数を使用して出力データ型を変換できます。
暗黙的なデータ型変換の使用
- 日付または数値文字列を数値に変換するには、1.0を掛けます。 たとえば、=(TODAY()+ 5)* 1.0。 この式は、現在の日付に5日間を加えて計算し、結果を整数値に変換します。
- 日付、数値、または通貨の値を文字列に変換するには、値を空の文字列と連結します。 たとえば、= Today()&“”
データ型変換のためのDAX関数の使用
あなたは次のDAX機能を使用することができます-
- 実数を整数に変換します。
- 実数、整数、または日付を文字列に変換します。
- 文字列を実数または日付に変換します。
これについては、次のセクションで学習します。
実数を整数に変換する
次のDAX関数を使用して、実数を整数に変換できます-
- ROUND(<number>、<num_digits>)*-指定された桁数に数値を丸め、10進数を返します。
- CEILING(<number>、<significance>)*-数値を最も近い整数または最も近い有意の倍数に切り上げ、10進数を返します。
- FLOOR(<number>、<significance>)*-数値を最も近い有意の倍数にゼロに切り下げ、10進数を返します。
実数、整数、または日付を文字列に変換する
次のDAX関数を使用して、実数、整数、または日付を文字列に変換できます-
- FIXED(<number>、[<decimals>]、[<no_comma>])*-数値を丸めて、結果をテキストとして返します。 小数点の右側の桁数は2または指定された小数点以下の桁数です。 結果はコンマ付き、またはオプションでコンマなしです。
- FORMAT(<value>、<format_string>)*-指定されたフォーマットに従って値をテキストに変換します。
日付を文字列に変換するためのFormat関数の使用については既に学習しました。
文字列を実数または日付に変換する
次のDAX関数を使用して、文字列を実数または日付に変換できます-
- VALUE(<text>)*-数値を表すテキスト文字列を数値に変換します。
- DATEVALUE(date_text)*-テキスト形式の日付を日時形式の日付に変換します。
- TIMEVALUE(time_text)*-テキスト形式の時刻を日時形式の時刻に変換します。
条件値とエラーのテスト
DAX関数を使用して、条件に基づいて異なる値になるデータの値をテストできます。 たとえば、年間販売額をテストし、その結果に基づいて、リセラーに優先または値のラベルを付けることができます。
また、DAX関数を使用して値の範囲またはタイプをチェックし、予期しないデータエラーによって計算が中断されるのを防ぐこともできます。
条件に基づいて値を作成する
ネストされたIF条件を使用して、値をテストし、条件付きで新しい値を生成できます。 次のDAX関数は、条件付き処理と条件値に便利です-
- IF(<logical_test>、<value_if_true>、[<value_if_false>])*-条件が満たされているかどうかを確認します。 条件がTRUEの場合は1つの値を返し、条件がFALSEの場合は別の値を返します。 Value_if_falseはオプションです。省略され、条件がFALSEの場合、関数はBLANK()を返します。
- OR(<logical1>、<logical2>)*-引数の1つがTRUEかどうかをチェックしてTRUEを返します。 両方の引数がFALSEの場合、関数はFALSEを返します。
- CONCATENATE(<text1>、<text2>)*-2つのテキスト文字列を1つのテキスト文字列に結合します。 結合されるアイテムは、テキスト、数値、またはテキストとして表されるブール値、またはそれらのアイテムの組み合わせです。 列に適切な値が含まれている場合は、列参照を使用することもできます。
DAXフォーミュラ内のエラーのテスト
DAXでは、計算列のある行に有効な値を設定し、別の行に無効な値を設定することはできません。 つまり、計算列のいずれかの部分にエラーがある場合、列全体にエラーのフラグが立てられるため、DAX数式を修正して、無効な値になるエラーを削除する必要があります。
DAX式のいくつかの一般的なエラーは次のとおりです-
- ゼロによる除算。
- 関数への引数は空白ですが、期待される引数は数値です。
論理関数と情報関数の組み合わせを使用してエラーをテストし、常に有効な値を返すことで、計算列でエラーが返されることを回避できます。 これには、次のDAX関数が役立ちます。
- ISBLANK(<値>)*-値が空白かどうかを確認し、TRUEまたはFALSEを返します。
- IFERROR(value、value_if_error)*-最初の引数の式がエラーになる場合、value_if_errorを返します。 それ以外の場合は、式自体の値を返します。
式の戻り値とvalue_if_errorの両方が同じデータ型である必要があります。 そうしないと、エラーが発生します。
Excel DAX-タイムインテリジェンスの使用
「タイムインテリジェンスについて」の章で、タイムインテリジェンスのDAXの強力な機能について学習しました。 この章では、さまざまなシナリオでDAXタイムインテリジェンス関数を使用する方法を学習します。
DAXタイムインテリジェンス機能には、
- データから日付または日付範囲を取得するのに役立つ関数。これらの関数は、同様の期間にわたる値を計算するために使用されます。
- 標準の日付間隔で機能し、月、年、または四半期の値を比較できるようにする関数。
- 指定された期間の最初と最後の日付を取得する関数。
- 期首残高と期末残高の作業を支援する機能。
累積売上の計算
DAXタイムインテリジェンス関数を使用して、累積売上を計算するための数式を作成できます。 次のDAX関数を使用して、期末残高と期首残高を計算できます-
- CLOSINGBALANCEMONTH(<expression>、<dates>、[<filter>])*-現在のコンテキストの月の最後の日付で式を評価します。
- OPENINGBALANCEMONTH(<expression>、<dates>、[<filter>])*-現在のコンテキストの月の最初の日付で式を評価します。
- CLOSINGBALANCEQUARTER(<expression>、<dates>、[<filter>])*-現在のコンテキストで四半期の最後の日付の式を評価します。
- OPENINGBALANCEQUARTER(<expression>、<dates>、[<filter>])*-現在のコンテキストで、四半期の最初の日付で式を評価します。
- CLOSINGBALANCEYEAR(<expression>、<dates>、[<filter>]、[<year_end_date>])*-現在のコンテキストの年の最後の日付で式を評価します。
- OPENINGBALANCEYEAR(<expression>、<dates>、<filter>]、[<year_end_date>])*-現在のコンテキストの年の最初の日付で式を評価します。
次のDAX関数を使用して、指定した時間に製品在庫の次の計算フィールドを作成できます-
異なる期間にわたる値の比較
DAXがサポートするデフォルトの期間は、月、四半期、年です。
次のDAXタイムインテリジェンス関数を使用して、さまざまな期間の合計を比較できます。
- * PREVIOUSMONTH(<dates>)*-現在のコンテキストで、dates列の最初の日付に基づいて、前月のすべての日付の列を含むテーブルを返します。
- * PREVIOUSQUARTER(<dates>)*-現在のコンテキストで、dates列の最初の日付に基づいて、前四半期からのすべての日付の列を含むテーブルを返します。
- * PREVIOUSYEAR(<dates>、<year_end_date>])*-現在のコンテキストで、dates列の最後の日付を指定すると、前年のすべての日付の列を含むテーブルを返します。
あなたは、比較のために指定された期間で西部地域の売上高の合計を計算するための次の計算フィールドを作成することができます、DAX関数を使用して-
並列期間にわたる値の比較
DAXタイムインテリジェンス関数PARALLELPERIODを使用して、指定された期間と並行する期間の合計を比較できます。
並列(<日付>、<番号の間隔>、<間隔>)
このDAX関数は、現在のコンテキストで、指定された日付列の日付と並行する期間を表す日付列を含むテーブルを返します。日付は、時間を前後にいくつかの間隔でシフトします。
西部地域での前年の売り上げを計算するために、次の計算フィールドを作成できます-
積算合計の計算
次のDAXタイムインテリジェンス関数を使用して、積算合計または積算合計を計算できます。
- * TOTALMTD(<expression>、<dates>、[<filter>])*-現在のコンテキストで現在までの月の式の値を評価します。
- * TOTALQTD(<expression>、<dates>、<filter>])*-現在のコンテキストで、現在までの四半期の日付の式の値を評価します。
- * TOTALYTD(<expression>、<dates>、[<filter>]、[<year_end_date>])*-現在のコンテキストで式の年初から現在までの値を評価します。
あなたは、DAX関数を使用することにより、指定された期間で西部地域の売上高の実行合計を計算するための次の計算フィールドを作成することができます-
月間累計:= TOTALMTD(SUM(West_Sales [SalesAmount])、DateTime [DateKey])
四半期連続合計:= TOTALQTD(SUM(WestSales [SalesAmount])、DateTime [DateKey])
Year Running Sum:= TOTALYTD(SUM(WestSales [SalesAmount])、DateTime [DateKey])
カスタム日付範囲での値の計算
DAXタイムインテリジェンス関数を使用して日付のカスタムセットを取得し、計算を実行するDAX関数への入力として使用して、期間全体でカスタム集計を作成できます。
- DATESINPERIOD(<dates>、<start_date>、<number_of_intervals>、<interval>)*-start_dateで始まり、指定されたnumber_of_intervalsまで続く日付の列を含むテーブルを返します。
- DATESBETWEEN(<dates>、<start_date>、)*-start_dateで始まりend_dateまで続く日付の列を含むテーブルを返します。
- DATEADD(<dates>、<number_of_intervals>、<interval>)*-現在のコンテキストの日付から指定された間隔数だけ時間を前後にシフトした日付の列を含むテーブルを返します。
- FIRSTDATE(<dates>)*-指定された日付列の現在のコンテキストの最初の日付を返します。
- LASTDATE(<dates>)*-日付の指定された列の現在のコンテキストの最後の日付を返します。
あなたは、DAX関数を使用することにより、指定された日付範囲で西地域の売上合計を計算するための次のDAX式を作成することができます
- 2016年7月17日より前の15日間の売上を計算するDAX数式。
- DAX Formulaを使用して、2016年第1四半期の売上を計算する計算フィールドを作成します。
- 現在のコンテキストで西部地域で販売が行われた最初の日付を取得する計算フィールドを作成するDAX数式。
- 現在のコンテキストで西部地域で販売が行われた最後の日付を取得する計算フィールドを作成するDAX式。
- 現在のコンテキストの日付の1年前の日付を計算するDAX式。
Excel DAX-値のランキングと比較
あなたが列またはピボットテーブル内のアイテムの上位 n 数のみを表示したい場合は、次の2つのオプションがあります-
- ピボットテーブルで n 個の上位値を選択できます。
- 値を動的にランク付けし、スライサーでランク付け値を使用するDAX数式を作成できます。
フィルターを適用して上位のいくつかのアイテムのみを表示する
ピボットテーブルに表示するための上位値の n 数を選択するには、次の操作を行います-
- ピボットテーブルの行ラベルの見出しの下矢印をクリックします。
- ドロップダウンリストで[値フィルター]をクリックし、[トップ10]をクリックします。
トップ10フィルター(<列名>)ダイアログボックスが表示されます。
- [表示]で、左から右のボックスで次を選択します。
- Top
- 18(表示する上位の値の数。 デフォルトは10です。)
- アイテム。
- [by]ボックスで、[Medal Count]を選択します。
- OKをクリックしてください。 上位18個の値がピボットテーブルに表示されます。
フィルター適用の利点と欠点
利点
- それはシンプルで使いやすいです。
- 多数の行があるテーブルに適しています。
デメリット
- フィルターは表示専用です。
- ピボットテーブルの基になるデータが変更された場合、ピボットテーブルを手動で更新して、変更を確認する必要があります。
値を動的にランク付けするDAX数式の作成
ランク付けされた値を含むDAX数式を使用して、計算列を作成できます。 結果の計算列でスライサーを使用して、表示する値を選択できます。
比較される値よりも大きい値を持つ同じテーブル内の行数をカウントすることにより、行内の特定の値のランク値を取得できます。 このメソッドは、次を返します-
- テーブル内の最高値のゼロ値。
- 等しい値は同じランク値になります。 値の n 数が等しい場合、等しい値の次の値は、 n の数を合計する非連続ランク値になります。
たとえば、売上データを含むテーブル「Sales」がある場合、次のように売上額の値のランクで計算列を作成できます-
次に、新しい計算列にスライサーを挿入し、ランクごとに値を選択して表示できます。
動的ランクの長所と短所
利点
- ランキングは、ピボットテーブルではなくテーブルで行われます。 したがって、任意の数のピボットテーブルで使用できます。
- DAX数式は動的に計算されます。 したがって、基になるデータが変更された場合でも、ランキングが正しいことを常に確認できます。
- DAX式は計算列で使用されるため、スライサーでランキングを使用できます。
- 多数の行があるテーブルに適しています。
デメリット
DAXの計算は計算コストが高いため、この方法は多数の行を持つテーブルには適さない場合があります。