データ モデルのデータ型

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

データ モデルでは、各列にデータ型を関連付けることで、列に格納できるデータの種類を指定しています。このデータ型は、整数、10 進数値、テキスト、通貨データ、日時などです。データ型によって、その列に行える演算の種類や、列に値を格納するために必要になるメモリの量も決まります。

PowerPivotアドインを使っている場合、列のデータ型を変更することができます。 日付の列が文字列としてインポートされたが、別のものにする必要がある場合は、このする必要があります。詳細については、 PowerPivotで列のデータ型の設定を参照してください。

この記事の内容

データ型の概要

テーブルのデータ型

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

暗黙的なデータ型変換の表

追加 (+)

減算 (-)

乗算 (*)

除算 (/)

比較演算子

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

データ型の概要

データ モデルでサポートされているデータ型を次の表に示します。データをインポートしたり、数式の中で値を使用したりした場合、たとえ元のデータ ソースには別のデータ型が入っていたとしても、そのデータは以下のデータ型のいずれかに変換されます。数式から得られた値にも、これらのデータ型が使用されます。

Excel でのデータ型

DAX でのデータ型

説明

整数

64 ビット (8 バイト) の整数値 1、2

小数点以下を含まない数値。整数は正の数値または負の数値のどちらも有効ですが、-9,223,372,036,854,775,808 (-2^63) ~ 9,223,372,036,854,775,807 (2^63-1) の範囲の整数でなければなりません。

10 進数

64 ビット (8 バイト) の実数 1、2

実数は、小数点以下を含む数値です。実数では、次のような幅広い範囲の値を表せます。

負の値 (-1.79E  + 308 ~ -2.23E  - 308 の範囲)

ゼロ

正の値 (2.23E -308 ~ 1.79E + 308 の範囲)

ただし、有効桁数は小数点以下が 15 桁に制限されます。

TRUE/FALSE

ブール値

True または False のいずれかの値。

テキスト

文字列

Unicode 文字のデータ文字列。テキスト形式で表された文字列、数値、または日付が該当します。

文字列の最大長は、268,435,456 Unicode 文字 (256 メガ文字) または 536,870,912 バイトです。

日付

日付/時刻

許容された日付時刻表現による日付および時刻。

1900 年 1 月 1 日より後のすべての日付が有効です。

通貨

通貨

通貨データ型では、-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 の範囲の値 (小数点以下が 4 桁で有効桁数が固定長) が有効です。

該当なし

空白

空白は、DAX で SQL の NULL を表し、それを置き換えるデータ型です。空白は BLANK 関数を使って作成でき、論理関数 ISBLANK を使えば空白であるかどうかを調べることができます。

1 DAX の数式では、この表に示したものより小さいデータ型はサポートされません。

2 非常に大きい数値を含むデータをインポートしようとすると、次のようなエラーが発生してインポートが失敗する場合があります。

メモリ内データベース エラー: '<テーブル名>' テーブルの '<列名>' 列に、'1.7976931348623157e+308' という値が入っていますが、これはサポートされていません。操作がキャンセルされました。

このエラーは、PowerPivot がこの値を使用して NULL を表すために発生します。次の一覧の値は、NULL 値の同義語です。

9223372036854775807

-9223372036854775808

1.7976931348623158e+308

2.2250738585072014e-308

データからこの値を削除して再度インポートしてください。

table データ型

DAX の集計、タイム インテリジェンスの計算など、関数の多くのテーブルのデータ型を使用します。一部の機能に必要なテーブルへの参照その他の関数は、[その他の関数に入力として使用できるテーブルを返します。入力としてテーブルを必要とする一部の機能では、テーブルに評価される式を指定できます。一部の機能については、ベース テーブルへの参照が必要です。特定の機能の要件については、 DAX 関数リファレンスを参照してください。

DAX 数式の暗黙的なデータ型変換と明示的なデータ型変換

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

引数として指定した列に入っているデータが、その関数に必要なデータ型と互換性がないと、多くの場合、DAX ではエラーが返されます。ただし、DAX は、可能な限り、データを必要なデータ型へと暗黙的に変換するよう試みます。次に例を示します。

  • 日付を文字列として入力すると、DAX はその文字列を解析し、Windows の日付および時刻の形式にキャストしようとします。

  • TRUE + 1 では 2 が返されます。これは、TRUE が数値の 1 に暗黙的に変換され、1 + 1 という演算が実行されるからです。

  • 2 つの列内の値を加算する場合に、1 つの値がテキスト ("12") で表現され、他の値が数値 (12) で表現されているとき、DAX では文字列を数値に暗黙的に変換してから加算が実行され、数値の結果が得られます。"22" + 22 という式では 44 が返されます。

  • 2 つの数値を連結する場合は、Excel により数値が文字列として表現されてから、連結されます。 12 & 34 という式では、"1234" が返されます。

次の表は、数式内で実行される暗黙的なデータ型変換をまとめたものです。Excel では、指定された演算の要件に応じて、可能な限りいつでも暗黙的な変換が行われます。

暗黙的なデータ型変換の表

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

注: テキスト データ型はこれらの表には含まれていません。数値がテキスト形式で表現されている場合、PowerPivot が数値型を決定して数値として表現しようとすることがあります。

加算 (+)

演算子 (+)

整数

通貨

実数

日付/時刻

整数

整数

通貨

実数

日付/時刻

通貨

通貨

通貨

実数

日付/時刻

実数

実数

実数

実数

日付/時刻

日付/時刻

日付/時刻

日付/時刻

日付/時刻

日付/時刻

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

減算 (-)

次の表では、行ヘッダーが被減数 (左側) で、列ヘッダーが減数 (右側) です。

演算子 (-)

整数

通貨

実数

日付/時刻

整数

整数

通貨

実数

実数

通貨

通貨

通貨

実数

実数

実数

実数

実数

実数

実数

日付/時刻

日付/時刻

日付/時刻

日付/時刻

日付/時刻

たとえば、減算演算で日付を他のデータ型と共に使用する場合、両方の値が日付に変換され、戻り値も日付になります。

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

乗算 (*)

演算子 (*)

整数

通貨

実数

日付/時刻

整数

整数

通貨

実数

整数

通貨

通貨

実数

通貨

通貨

実数

実数

通貨

実数

実数

たとえば、乗算演算で整数を実数と組み合わせて使用する場合、両方の数値が実数に変換され、戻り値も実数になります。

除算 (/)

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

演算子 (/)

行/列

整数

通貨

実数

日付/時刻

整数

実数

通貨

実数

実数

通貨

通貨

実数

通貨

実数

実数

実数

実数

実数

実数

日付/時刻

実数

実数

実数

実数

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

比較演算子

比較式では、ブール値は文字列値よりも大きいと見なされ、文字列値は数値や日付/時刻値よりも大きいと見なされ、数値と日付/時刻値は同じランクを持つものと見なされます。ブール値と文字列値に対しては、暗黙的な変換は行われません。BLANK や空白値は、比較対象となる値のデータ型に応じて、0/""/false に変換されます。

次の DAX 式はこの動作を示しています。

=IF(FALSE() >"true"、「式が true」、「式は false」)、「式が true」を返します。

= IF("12">12,"Expression is true","Expression is false")] では、「式が true」が返されます。

= IF("12"=12,"Expression is true","Expression is false")] は、「式は false」を返します。

次の表に示すように、数値型または日付/時刻型については、変換は暗黙的に実行されます。

比較演算子

整数

通貨

実数

日付/時刻

整数

整数

通貨

実数

実数

通貨

通貨

通貨

実数

実数

実数

実数

実数

実数

実数

日付/時刻

実数

実数

実数

日付/時刻

ページの先頭へ

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

DAX では、null、空白値、空のセル、見つからない値はすべて、同一の新しい値型 BLANK で表されます。空白は BLANK 関数を使用して生成することもできます。そして、空白かどうかのテストは ISBLANK 関数を使用して行えます。

加算や連結などの演算で空白がどのように扱われるかは、個々の関数ごとに異なります。次の表は、空白がどのように扱われるかという点で、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

エラー

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

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×