PowerPivot ブックでサポートされるデータ型
このセクションでは、PowerPivot for Excel で使用できるデータ型について説明し、Data Analysis Expressions (DAX) 数式でデータを計算または使用する場合のデータ型の暗黙的な変換についても解説します。
PowerPivot for Excel で使用されるデータ型
PowerPivot では、次のデータ型の使用がサポートされています。データをインポートする場合や数式で値を使用する場合は、元のデータ ソースに別のデータ型が含まれていても、そのデータは次のデータ型のいずれかに変換されます。数式で得られる結果の値にも、これらのデータ型が使用されます。
通常、これらのデータ型は、計算列で正確な計算を実行するために実装されます。一貫性を確保するために、同じ制限が PowerPivot のその他のデータにも適用されます。
数値、通貨、日付と時刻に使用される数式は、ブックを開くコンピューターに指定されているロケールの形式に従います。ワークシートの書式設定オプションを使用して、値の表示方法を制御できます。
PowerPivot UI のデータ型 |
DAX のデータ型 |
説明 |
整数 |
64 ビット (8 バイト) の整数値 1、2 |
小数点以下を含まない数値。整数は正の数値または負の数値のどちらも有効ですが、-9,223,372,036,854,775,808 (-2^63) ~ 9,223,372,036,854,775,807 (2^63-1) の範囲の整数でなければなりません。 |
小数 |
64 ビット (8 バイト) の実数 1、2 |
小数点以下を含む数値。実数では次のような幅広い値が有効です。 負の値 (-1.79E +308 ~ -2.23E -308 の範囲) ゼロ 正の値 (2.23E -308 ~ 1.79E + 308 の範囲) ただし、有効桁数は小数点以下が 17 桁に制限されます。 |
TRUE/FALSE |
ブール値 |
True または False のいずれかの値。 |
テキスト |
文字列 |
Unicode データ文字列。文字列、数字、またはテキスト形式で表現される日付を使用できます。 文字列の最大長は、268,435,456 Unicode 文字 (256 メガ文字) または 536,870,912 バイトです。 |
日付 |
日付/時刻 |
許容された日付時刻表現による日付および時刻。 1900 年 3 月 1 日より後のすべての日付が有効です。 |
通貨 |
通貨 |
通貨データ型では、-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 の範囲の値 (小数点以下が 4 桁で有効桁数が固定長) が有効です。 |
N/A |
空白 |
空白は、DAX では SQL の NULL に相当するデータ型です。空白を作成するには BLANK 関数を使用し、空白かどうかをテストするには論理関数の ISBLANK を使用します。 |
1 DAX の数式では、この表に示したものより小さいデータ型がサポートされません。
2 非常に大きい数値を含むデータをインポートしようとすると、次のようなエラーが発生してインポートが失敗する場合があります。
インメモリ データベース エラー: '<列名>' 列 ('<テーブル名>' テーブル) に、サポートされていない値 '1.7976931348623157e+308' が含まれています。操作は取り消されました。
このエラーは、PowerPivot がこの値を使用して NULL を表すために発生します。次の一覧の値は、上で説明した NULL 値のシノニムです。
値 |
9223372036854775807 |
-9223372036854775808 |
1.7976931348623158e+308 |
2.2250738585072014e-308 |
データからこの値を削除して再度インポートしてください。
table データ型
さらに、DAX では table データ型を使用します。このデータ型は、集計やタイム インテリジェンス計算など、DAX の多くの関数で使用されます。一部の関数は、テーブルへの参照を受け取ります。また、他の関数の入力として使用できるテーブルを返す関数もあります。入力としてテーブルを受け取る一部の関数では、テーブルに評価される式を指定できます。また、ベース テーブルへの参照を受け取る関数もあります。特定の関数の要件については、「PowerPivot の DAX 関数リファレンス」を参照してください。
DAX 数式の暗黙的なデータ型変換と明示的なデータ型変換
各 DAX 関数には、入力および出力として使用するデータ型について固有の要件があります。たとえば、一部の関数は、特定の引数に整数や日付の指定が必要です。テキストやテーブルの指定が必要な関数もあります。
引数として指定する列内のデータと、関数が受け取るデータ型との互換性がない場合、DAX では多くの場合エラーが返されます。ただし、DAX は可能な限り、必要なデータ型への暗黙的な変換を試行します。次にその例を示します。
日付を文字列として入力すると、DAX はその文字列を解析し、Windows の日付および時刻の形式にキャストしようとします。
TRUE + 1 では 2 が返されます。これは、TRUE が数値の 1 に暗黙的に変換され、1 + 1 という演算が実行されるからです。
2 つの列内の値を加算する場合に、1 つの値がテキスト ("12") で表現され、他の値が数値 (12) で表現されているとき、DAX では文字列を数値に暗黙的に変換してから加算が実行され、数値の結果が得られます。次の式では、44: = "22" + 22 が返されます。
2 つの数値を連結する場合は、PowerPivot アドインにより数値が文字列として表現されてから、連結されます。 次の式では、"1234": = 12 & 34 が返されます。
次の表に、数式で実行される暗黙的なデータ型変換をまとめました。通常、PowerPivot の動作は Microsoft Excel と似ていますが、指定された演算に必要な場合は可能な限り暗黙的な変換を実行します。
暗黙的なデータ型変換の表
実行される変換のタイプは演算子によって決定され、要求された演算を実行する前に必要な値がキャストされます。これらの表には演算子とデータ型が記載されていますが、列と行が交差するセルには、各データ型を組み合わせた場合に実行される変換が示されています。
注 |
---|
テキスト データ型はこれらの表には含まれていません。数値がテキスト形式で表現されている場合、PowerPivot が数値型を決定して数値として表現しようとすることがあります。 |
加算 (+)
演算子 (+) |
整数 |
通貨 |
実数 |
日付/時刻 |
整数 |
整数 |
通貨 |
実数 |
日付/時刻 |
通貨 |
通貨 |
通貨 |
実数 |
日付/時刻 |
実数 |
実数 |
実数 |
実数 |
日付/時刻 |
日付/時刻 |
日付/時刻 |
日付/時刻 |
日付/時刻 |
日付/時刻 |
たとえば、加算演算で実数を通貨データと組み合わせて使用する場合、両方の値が実数に変換され、結果が実数として返されます。
減算 (-)
次の表では、行ヘッダーが被減数 (左側)で、列ヘッダーが減数 (右側) です。
演算子 (-) |
整数 |
通貨 |
実数 |
日付/時刻 |
整数 |
整数 |
通貨 |
実数 |
実数 |
通貨 |
通貨 |
通貨 |
実数 |
実数 |
実数 |
実数 |
実数 |
実数 |
実数 |
日付/時刻 |
日付/時刻 |
日付/時刻 |
日付/時刻 |
日付/時刻 |
たとえば、減算演算で日付を他のデータ型と共に使用する場合、両方の値が日付に変換され、戻り値も日付になります。
注 |
---|
PowerPivot では、単項演算子の - (負号) もサポートされますが、この演算子はオペランドのデータ型を変更しません。 |
乗算 (*)
演算子 (*) |
整数 |
通貨 |
実数 |
日付/時刻 |
整数 |
整数 |
通貨 |
実数 |
整数 |
通貨 |
通貨 |
実数 |
通貨 |
通貨 |
実数 |
実数 |
通貨 |
実数 |
実数 |
たとえば、乗算演算で整数を実数と組み合わせて使用する場合、両方の数値が実数に変換され、戻り値も実数になります。
除算 (/)
次の表では、行ヘッダーが分子で、列ヘッダーが分母です。
演算子 (/) 行/列 |
整数 |
通貨 |
実数 |
日付/時刻 |
整数 |
実数 |
通貨 |
実数 |
実数 |
通貨 |
通貨 |
実数 |
通貨 |
実数 |
実数 |
実数 |
実数 |
実数 |
実数 |
日付/時刻 |
実数 |
実数 |
実数 |
実数 |
たとえば、除算演算で整数を通貨値と組み合わせて使用する場合、両方の値が実数に変換され、結果も実数になります。
比較演算子
比較式では、ブール値は文字列値よりも大きいと見なされ、文字列値は数値または日付/時刻値よりも大きいと見なされます。また、数値と日付/時刻値は同じランクであると見なされます。ブール値または文字列値については、暗黙的な変換は実行されません。BLANK、つまり空白値は、他方の比較値のデータ型に応じて 0/""/false に変換されます。
次の DAX 式はこの動作を示しています。
=IF(FALSE()>"true","Expression is true", "Expression is false")では次が返されます。"Expression is true"
=IF("12">12,"Expression is true", "Expression is false")では次が返されます。"Expression is true"
=IF("12"=12,"Expression is true", "Expression is false")では次が返されます。"Expression is false"
次の表に示すように、数値型または日付/時刻型については、変換は暗黙的に実行されます。
比較演算子 |
整数 |
通貨 |
実数 |
日付/時刻 |
整数 |
整数 |
通貨 |
実数 |
実数 |
通貨 |
通貨 |
通貨 |
実数 |
実数 |
実数 |
実数 |
実数 |
実数 |
実数 |
日付/時刻 |
実数 |
実数 |
実数 |
日付/時刻 |
空白、空の文字列、およびゼロ値の処理
DAX でゼロ値、NULL 値、および空の文字列が処理される方法は、Microsoft Excel および SQL Server とは異なります。このセクションではその違いについて説明し、これらのデータ型を処理する方法を示します。
重要な点は、PowerPivot では、空白値、空のセル、または不足値がすべて同じ新しい値型の BLANK で表されることです。加算や連結などの演算で空白が処理される方法は、関数ごとに異なります。空白は BLANK 関数を使用して作成することもでき、空白かどうかをテストするには ISBLANK 関数を使用します。PowerPivot ブックではデータベースの NULL 値はサポートされていません。DAX の数式で NULL 値を含む列が参照されている場合、NULL 値は暗黙的に空白に変換されます。
空白、NULL 値、および空の文字列を定義する
次の表は、DAX と Microsoft Excel における空白の処理方法の違いを示しています。
式 |
DAX |
Excel |
BLANK + BLANK |
BLANK |
0 (ゼロ) |
BLANK + 5 |
5 |
5 |
BLANK * 5 |
BLANK |
0 (ゼロ) |
5 / BLANK |
無限大 |
エラー |
0 / BLANK |
NaN |
エラー |
BLANK / BLANK |
BLANK |
エラー |
FALSE OR BLANK |
FALSE |
FALSE |
FALSE AND BLANK |
FALSE |
FALSE |
TRUE OR BLANK |
TRUE |
TRUE |
TRUE AND BLANK |
FALSE |
TRUE |
BLANK OR BLANK |
BLANK |
エラー |
BLANK AND BLANK |
BLANK |
エラー |
特定の関数または演算子で空白を処理する方法の詳細については、「PowerPivot の DAX 関数リファレンス」セクションの各 DAX 関数のトピックを参照してください。