表形式モデルでサポートされるデータ型

適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

このトピックでは、テーブル モデルで使用できるデータ型について説明し、データが計算される場合または Data Analysis Expressions (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 桁に制限されます。
Boolean Boolean True または False の値。
Text String Unicode 文字データ文字列。 テキスト形式で表現した文字列、数値、または日付を格納できます。
日付 日付/時刻 許容された日付時刻表現による日付および時刻。

1900 年 3 月 1 日より後のすべての日付が有効です。
通貨 通貨 通貨データ型を使用すると、-922,337,203,685,477.5807 から 922,337,203,685,477.5806 までの値を、固定精度の 4 桁の 10 進数で使用できます。
該当なし 空白 空白は、DAX では SQL の NULL に相当するデータ型です。 空白を作成するには BLANK 関数を使用し、空白かどうかをテストするには論理関数の ISBLANK を使用します。

* 数値が大きいデータをインポートしようとすると、インポートが失敗し、次のエラーが発生する可能性があります。

メモリ内データベース エラー: 'table name>>' テーブルの '<<列名' 列には、サポートされていない値 '1.7976931348623157e+308' が含まれています。 操作が取り消されました。

このエラーは、モデル デザイナーがこの値を使用して NULL を表すために発生します。 次の一覧の値は、上で説明した NULL 値のシノニムです。

9223372036854775807
-9223372036854775808
1.7976931348623158e+308
-1.7976931348623158e+308

データから値を削除し、もう一度インポートしてみてください。

Note

131,072 文字を超える文字列を含む varchar(max) 列からインポートすることはできません。

テーブル データ型

また、DAX では table データ型を使用します。 このデータ型は、集計やタイム インテリジェンス計算など、DAX の多くの関数で使用されます。 一部の関数は、テーブルへの参照を必要とします。また、関数からテーブルが返され、そのテーブルを他の関数への入力として使用できる場合もあります。 入力としてテーブルを必要とするいくつかの関数では、テーブルに評価される式を指定できます。また、ベース テーブルへの参照を必要とする関数もあります。 特定の関数の要件については、「DAX 関数リファレンス」をご覧ください。

DAX 数式での暗黙的および明示的なデータ型変換

各 DAX 関数には、入力と出力として使用するデータの型について特定の要件があります。 たとえば、引数としていつかの整数といくつかの日付を必要とする関数があります。テキストやテーブルを必要とする関数もあります。

引数として指定した列のデータが関数に必要なデータ型と互換性がない場合、多くの場合、DAX はエラーを返します。 ただし、DAX は、可能な限り、データを必要なデータ型に暗黙的に変換しようとします。 たとえば次のような点です。

  • "123" などの数値を文字列として入力できます。 DAX は文字列を解析し、数値データ型として指定しようとします。

  • TRUE に 1 を加算することができます。その結果は 2 です。TRUE は暗黙的に数値 1 に変換され、1+1 という演算が行われます。

  • 2 つの列に含まれる値を加算する場合に、1 つの値がテキスト ("12")、もう 1 つの値が数値 (12) として表現されている場合、DAX によって文字列が数値に暗黙的に変換され、数値の結果に対して加算が行われます。 次の式では、44: = "22" + 22 が返されます。

  • 2 つの数値を連結しようとすると、文字列として表示され、連結されます。 次の式では、"1234": = 12 & 34 が返されます。

次の表に、数式で実行される暗黙的なデータ型変換をまとめました。 通常、セマンティック モデル デザイナーの動作は Microsoft Excel と似ていますが、指定された演算に必要な場合は可能な限り暗黙的な変換を実行します。

暗黙的なデータ変換のテーブル

実行される変換の種類は、演算子によって決まります。要求された演算を実行する前に、演算子に必要な値へのキャストが行われます。 以下の表に、演算子の一覧と、各列のデータ型を交差する行のデータ型と組み合わせた場合に実行される変換を示します。

注意

テキスト データ型は、これらの表に含まれていません。 数値がテキスト形式で として表される場合、場合によっては、モデル デザイナーは数値の種類を特定し、数値として表そうとします。

加算 (+)

整数 CURRENCY 実数 日付/時刻
INTEGER 整数 CURRENCY 実数 日付/時刻
CURRENCY CURRENCY 通貨 実数 日付/時刻
REAL real 実数 実数 日付/時刻
日付/時刻 日付/時刻 日付/時刻 日付/時刻 日付/時刻

たとえば、通貨値と組み合わせる加算演算で実数を使用した場合であれば、両方の値が実数に変換され、結果は実数として返されます。

減算 (-)

次の表では、行ヘッダーは minuend (左側) で、列ヘッダーはサブトラヘンド (右側) です。

整数 CURRENCY 実数 日付/時刻
INTEGER 整数 CURRENCY 実数 実数
CURRENCY CURRENCY 通貨 実数 実数
REAL real 実数 実数 実数
日付/時刻 日付/時刻 日付/時刻 日付/時刻 日付/時刻

たとえば、日付と他のデータ型で減算を行う場合、両方の値が日付に変換され、返される値も日付です。

注意

テーブル モデルでは、単項演算子の - (負号) もサポートされますが、この演算子はオペランドのデータ型を変更しません。

乗算 (*)

整数 CURRENCY 実数 日付/時刻
INTEGER 整数 CURRENCY 実数 整数
CURRENCY 通貨 実数 CURRENCY 通貨
REAL 実数 CURRENCY 実数 実数

たとえば、乗算演算で整数を実数と組み合わせると、両方の数値が実数に変換され、返される値も実数です。

除算 (/)

次の表では、行ヘッダーは分子で、列ヘッダーは分母です。(行/列)

整数 CURRENCY 実数 日付/時刻
INTEGER 実数 CURRENCY 実数 実数
CURRENCY 通貨 実数 CURRENCY 実数
REAL real 実数 実数 実数
日付/時刻 real 実数 実数 実数

たとえば、除算演算で整数を通貨値と組み合わせると、両方の値が実数に変換され、結果も実数になります。

比較演算子

比較操作用の混合データ型の組み合わせの限られたセットのみがサポートされます。 詳細については、「 DAX 演算子リファレンス」を参照してください。

空白、空の文字列、およびゼロ値の処理

次の表は、DAX と Microsoft Excel の違いを、空白の処理方法でまとめたものです。

DAX Excel
BLANK + BLANK BLANK 0 (ゼロ)
BLANK + 5 5 5
BLANK * 5 BLANK 0 (ゼロ)
5/BLANK 無限大 Error
0/BLANK NaN Error
BLANK/BLANK BLANK Error
FALSE OR BLANK FALSE FALSE
FALSE AND BLANK FALSE FALSE
TRUE OR BLANK TRUE TRUE
TRUE AND BLANK FALSE TRUE
BLANK OR BLANK BLANK Error
BLANK AND BLANK BLANK Error

特定の関数または演算子で空白を処理する方法の詳細については、「 DAX 関数リファレンス」セクションの各 DAX 関数のトピックを参照してください。