DAX 関数の操作
DAX 関数ライブラリは、それぞれ特定の目標を達成するように設計された数百個の関数で構成されています。
DAX は Microsoft Excel 2010 の Power Pivot アドインに端を発しているため、Excel にも存在する 80 個以上の関数を使用できます。 これは、Excel ユーザーが DAX を使用して生産性をすばやく向上できるようするという、Microsoft の意図的な設計戦略でした。
ただし、以下のように、Excel にはない、データ モデリングに固有の関数が多数存在します。
- リレーションシップ ナビゲーション関数
- フィルター コンテキスト変更関数
- 反復子関数
- タイム インテリジェンス関数
- パス関数
ヒント
DAX 関数に関連するドキュメントを検索するには、Web 検索で、キーワード DAX の後に関数名を入力します。
詳細については、「DAX 関数リファレンス」をご覧ください。
Excel 由来の関数
以下のセクションでは、Excel に存在し、ユーザーが既に使い慣れている可能性のあるいくつかの便利な関数について説明します。
IF
DAX 関数は、最初の引数として指定された条件が満たされているかどうかをテストします。 条件が TRUE の場合と条件が FALSE の場合で、それぞれ別々の値を返します。 この関数の構文は次のとおりです。
IF(<logical_test>, <value_if_true>[, <value_if_false>])
ヒント
関数の引数は、ドキュメントの表記において角かっこで囲まれている場合は省略可能です。
logical_test が FALSE と評価され、value_if_false が指定されていない場合、この関数は空白を返します。
SUM
、COUNT
、AVERAGE
、MIN
、MAX
など、多くの Excel 集計関数を使用できます。 唯一の違いは、DAX では列参照を渡すのに対して、Excel ではセルの範囲を渡すことです。
Excel の数学、テキスト、日付と時刻、情報、および論理の各関数も多数使用できます。 たとえば、DAX で使用できる Excel 関数の例として、ABS
、ROUND
、SQRT
、LEN
、LEFT
、RIGHT
、UPPER
、DATE
、YEAR
、MONTH
、NOW
、ISNUMBER
、TRUE
、FALSE
、AND
、OR
、NOT
、IFERROR
などがあります。
Excel 由来ではない関数
モデリングに固有ではなく、Excel 由来でない便利な DAX 関数として、DISTINCTCOUNT
と DIVIDE
の 2 つがあります。
DISTINCTCOUNT 関数
DISTINCTCOUNT
DAX 関数を使用して、列内の個別の値の数をカウントできます。 この関数は、分析ソリューションで特に効果を発揮します。 顧客の数が "個別の" 顧客の数と異なる場合を考えてみます。 後者は繰り返しの顧客をカウントしないため、「"異なる" 顧客の数」と「顧客の数」という違いがあります。
DIVIDE 関数
DIVIDE
DAX 関数を使用して、除算を行うことができます。 分子と分母の式を渡す必要があります。 必要に応じて、"代替結果" を表す値を渡すことができます。
DIVIDE
関数の構文は次のとおりです。
DIVIDE(<numerator>, <denominator>[, <alternate_result>])
DIVIDE
関数により、ゼロによる除算が自動的に処理されます。 代替結果が渡されず、分母がゼロまたは空白の場合、この関数は空白を返します。 代替結果が渡された場合は、それが空白の代わりに返されます。
この関数は、式で最初に分母の値をテストしなくてもよいという点が便利です。 また、この関数は、IF
関数よりも分母の値のテスト用に最適化されています。 ゼロ除算のチェックはコストがかかるため、パフォーマンス向上に有効です。 さらに、DIVIDE
関数を使用すると、より簡潔で洗練された式になります。
ヒント
分母が式であり、ゼロまたは空白を返す可能性がある場合は常に、DIVIDE
関数を使用することをお勧めします。 分母が定数値の場合は、このモジュールで後ほど紹介する除算演算子 (/) を使用することをお勧めします。 この場合は、除算が必ず成功し、不要なテストを回避できるので、式のパフォーマンスが向上します。