適用対象: Azure Analysis Services Fabric/Power BI Premium
SQL Server Analysis Services
この記事では、表形式モデルで使用できるデータ型について説明し、データがデータ分析式 (DAX) 式で計算または使用される場合のデータ型の暗黙的な変換について説明します。
表形式モデルで使用されるデータ型
データをインポートするとき、または数式で値を使用する場合、元のデータ ソースに別のデータ型が含まれている場合でも、データは次のいずれかのデータ型に変換されます。 数式から得られた値でも、これらのデータ型が使用されます。
一般に、これらのデータ型は、計算列で正確な計算を可能にするために実装され、一貫性を保つため、モデル内の残りのデータにも同じ制限が適用されます。
数値、通貨、日付、時刻に使用される形式は、モデル データの操作に使用されるクライアントで指定されたロケールの形式に従う必要があります。 モデルの書式設定オプションを使用して、値の表示方法を制御できます。
| モデル内のデータ型 | DAX のデータ型 | 説明 |
|---|---|---|
| 整数 | 64 ビット (8 バイト) の整数値* 手記: DAX 数式では、説明に記載されている最小値を保持するには小さすぎるデータ型はサポートされていません。 |
小数点以下の桁数を持たない数値。 整数は正または負の数にすることができますが、-9,223,372,036,854,775,807 (-2^63+1) ~ 9,223,372,036,854,775,806 (2^63-2) の整数である必要があります。 |
| 10 進数 | 64 ビット (8 バイト) 実数* 手記: DAX 数式では、説明に記載されている最小値を保持するには小さすぎるデータ型はサポートされていません。 |
実数とは、小数点を含むことができる数値のことです。 実数は、さまざまな値をカバーします。 -1.79E +308 ~ -2.23E -308 の負の値 ゼロ 2.23E -308 ~ 1.79E + 308 の正の値 ただし、有効桁数は 15 桁の 10 進数に制限されます。 |
| ブール値 | ブール値 | True または False のいずれかの値。 |
| テキスト | 糸 | Unicode 文字データ文字列。 文字列、数値、またはテキスト形式で表される日付を指定できます。 文字列の有効な最大サイズには、32767 バイトの制限が適用されます。 |
| バイナリ | 糸 | 非構造化バイナリ データ (画像など)。 このデータ型の列には、DAX の機能が制限されています。 バイナリ データ値の有効な最大サイズは、67108864バイト制限の対象となります。 |
| 日付 | 日付/時刻 | 受け入れられた日時表現の日付と時刻。 有効な日付は、1900 年 3 月 1 日以降のすべての日付です。 |
| 通貨 | 通貨 | 通貨データ型では、-922,337,203,685,477.5807 ~ 922,337,203,685,477.5806 の範囲の値を使用できます。固定精度の 4 桁の 10 進数を使用できます。 |
| 変種 | 変種 | 異なるデータ型を返す可能性がある DAX メジャーなどの式に使用されます。 たとえば、整数または文字列のいずれかを返す DAX メジャーは、バリアント型のデータ型になります。 |
| なし | 空白 | 空白は、SQL null を表し、置き換える DAX のデータ型です。 BLANK 関数を使用して空白を作成し、論理関数 ISBLANK を使用して空白をテストできます。 |
* 数値が大きいデータをインポートしようとすると、インポートが失敗し、次のエラーが発生する可能性があります。
メモリ内データベース エラー: '<table name>' テーブルの '<column name>' 列には、サポートされていない値 '1.7976931348623157e+308' が含まれています。 操作が取り消されました。
このエラーは、モデル デザイナーがその値を使用して null を表しているために発生します。 次の一覧の値は、前述の null 値のシノニムです。
| 価値 |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1.7976931348623158e+308 |
| -1.7976931348623158e+308 |
データから値を削除し、もう一度インポートしてみてください。
注
文字列の長さが 131,072 文字を超える varchar(max) 列からインポートすることはできません。
テーブルのデータ型
さらに、DAX では テーブル データ型が使用されます。 このデータ型は、集計やタイム インテリジェンスの計算など、多くの関数で DAX によって使用されます。 一部の関数では、テーブルへの参照が必要です。他の関数は、他の関数への入力として使用できるテーブルを返します。 入力としてテーブルを必要とする一部の関数では、テーブルに評価される式を指定できます。一部の関数では、ベース テーブルへの参照が必要です。 特定の関数の要件については、「 DAX 関数リファレンス」を参照してください。
DAX 数式での暗黙的および明示的なデータ型変換
各 DAX 関数には、入力と出力として使用されるデータの種類に関する特定の要件があります。 たとえば、一部の関数では、一部の引数には整数が必要で、他の関数の場合は日付が必要です。その他の関数にはテキストまたはテーブルが必要です。
引数として指定した列のデータが関数に必要なデータ型と互換性がない場合、多くの場合、DAX はエラーを返します。 ただし、可能な限り DAX は、データを必要なデータ型に暗黙的に変換しようとします。 例えば次が挙げられます。
文字列として数値 (例: "123") を入力できます。 DAX は文字列を解析し、数値データ型として指定しようとします。
TRUE + 1 を追加し、結果 2 を取得できます。TRUE は数値 1 に暗黙的に変換され、操作 1+ 1 が実行されるためです。
2 つの列に値を追加し、1 つの値がテキスト ("12") として表され、もう一方が数値 (12) として表される場合、DAX は文字列を暗黙的に数値に変換し、数値結果の加算を行います。 次の式は 44: = "22" + 22 を返します。
2 つの数値を連結しようとすると、文字列として表示され、連結されます。 次の式は "1234" を返します: = 12 & 34
次の表は、数式で実行される暗黙的なデータ型変換をまとめたものです。 一般に、セマンティック モデル デザイナーは Microsoft Excel と同様に動作し、指定された操作で必要な場合は可能な限り暗黙的な変換を実行します。
暗黙的なデータ変換の表
実行される変換の種類は、要求された操作を実行する前に必要な値をキャストする演算子によって決まります。 次の表は、演算子の一覧を示し、交差する行のデータ型と組み合わせたときに列の各データ型に対して実行される変換を示します。
注
これらのテーブルには、テキスト データ型は含まれません。 数値がテキスト形式で表される場合、場合によっては、モデル デザイナーは数値の種類を特定し、数値として表そうとします。
加算 (+)
| 整数 | 通貨 | 本物 | 日付/時刻 | |
|---|---|---|---|---|
| 整数 | 整数 | 通貨 | 本物 | 日付/時刻 |
| 通貨 | 通貨 | 通貨 | 本物 | 日付/時刻 |
| 実数 | 本物 | 本物 | 本物 | 日付/時刻 |
| 日付/時刻 | 日付/時刻 | 日付/時刻 | 日付/時刻 | 日付/時刻 |
たとえば、通貨データと組み合わせて加算演算で実数を使用すると、両方の値が REAL に変換され、結果が REAL として返されます。
減算 (-)
次の表では、行ヘッダーは minuend (左側) で、列ヘッダーはサブトラヘンド (右側) です。
| 整数 | 通貨 | 本物 | 日付/時刻 | |
|---|---|---|---|---|
| 整数 | 整数 | 通貨 | 本物 | 本物 |
| 通貨 | 通貨 | 通貨 | 本物 | 本物 |
| 実数 | 本物 | 本物 | 本物 | 本物 |
| 日付/時刻 | 日付/時刻 | 日付/時刻 | 日付/時刻 | 日付/時刻 |
たとえば、他のデータ型の減算演算で日付が使用されている場合、両方の値が日付に変換され、戻り値も日付になります。
注
表形式モデルでは単項演算子 (負) もサポートされていますが、この演算子はオペランドのデータ型を変更しません。
乗算 (*)
| 整数 | 通貨 | 本物 | 日付/時刻 | |
|---|---|---|---|---|
| 整数 | 整数 | 通貨 | 本物 | 整数 |
| 通貨 | 通貨 | 本物 | 通貨 | 通貨 |
| 実数 | 本物 | 通貨 | 本物 | 本物 |
たとえば、乗算演算で整数を実数と組み合わせると、両方の数値が実数に変換され、戻り値も REAL になります。
除算 (/)
次の表では、行ヘッダーが分子、列ヘッダーが分母です。(行/列)
| 整数 | 通貨 | 本物 | 日付/時刻 | |
|---|---|---|---|---|
| 整数 | 本物 | 通貨 | 本物 | 本物 |
| 通貨 | 通貨 | 本物 | 通貨 | 本物 |
| 実数 | 本物 | 本物 | 本物 | 本物 |
| 日付/時刻 | 本物 | 本物 | 本物 | 本物 |
たとえば、整数を除算演算の通貨値と組み合わせると、両方の値が実数に変換され、結果も実数になります。
比較演算子
比較操作では、データ型の組み合わせが混在する限られたセットのみがサポートされます。 詳細については、「 DAX 演算子リファレンス」を参照してください。
空白、空の文字列、およびゼロ値の処理
次の表は、DAX と Microsoft Excel の違いを、空白の処理方法でまとめたものです。
| 表現 | DAX | エクセル |
|---|---|---|
| 空白 + 空白 | 空白 | 0 (ゼロ) |
| 空白 +5 | 5 | 5 |
| 空白 * 5 | 空白 | 0 (ゼロ) |
| 5/空白 | 無限大 | エラー |
| 0/空白 | NAN | エラー |
| 空白/空白 | 空白 | エラー |
| 偽 または 空白 | 偽 | 偽 |
| FALSE と空白 | 偽 | 偽 |
| TRUE または空白 | 真実 | 真実 |
| 真と空白 | 偽 | 真実 |
| 空白 または 空白 | 空白 | エラー |
| 空白と空白 | 空白 | エラー |
特定の関数または演算子が空白を処理する方法の詳細については、「DAX 関数リファレンス」セクションの各 DAX 関数の個々のトピックを 参照してください。