ExcelDAX-演算子
DAXは、1つ以上の値を計算して返すために、数式または式で使用できる関数、演算子、および値で構成される数式言語です。
使用できます DAX operators値を比較し、算術計算を実行し、文字列を連結します。この章では、DAX演算子とその使用方法について学習します。
DAX演算子の種類
DAXは次のタイプの演算子をサポートします-
- DAX算術演算子
- DAX比較演算子
- DAXテキスト連結演算子
- DAX論理演算子
DAX演算子の優先順位
複数の値または式を組み合わせた多くのDAX演算子を含むDAX数式を作成できます。このような場合、最終的な結果は、操作が実行される順序によって異なります。DAXは、デフォルトの演算子の優先順位と、デフォルトの優先順位をオーバーライドする方法を提供します。
DAXのデフォルトの演算子の優先順位を次の表に示します。
優先順位 | オペレーター | 操作 |
---|---|---|
1 | ^ | べき乗 |
2 | – | 符号 |
3 | *および/ | 乗算と除算 |
4 | ! | ない |
5 | +および– | 足し算と引き算 |
6 | & | 連結 |
7 | =、<、>、<=、> =および<> | 等しい、より小さい、より大きい、以下、以上、等しくない |
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は、日付と時刻のタイプのより豊富なサポートを含む、リレーショナルデータベースであるデータモデルの追加の高度な機能を提供します。
場合によっては、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で関数の名前が同じであっても、そのパラメーターが異なる場合があり、関数の結果も異なる場合があります。
これらすべてについては、次の章で詳しく説明します。