Power BI Desktop でのデータ型Data types in Power BI Desktop

この記事では、Power BI Desktop と Data Analysis Expressions (DAX) でサポートされるデータ型について説明します。This article describes data types supported in Power BI Desktop and Data Analysis Expressions (DAX).

Power BI Desktop にデータを読み込むと、ソース列のデータ型は、ストレージへの効率的な格納、計算、データの視覚化をより適切にサポートできるデータ型に変換されます。When you load data into Power BI Desktop, it will attempt to convert the data type of the source column into a data type that better supports more efficient storage, calculations, and data visualization. たとえば、Excel からインポートする値の列に小数部の値が含まれない場合は、Power BI Desktop により、そのデータの列全体が整数を格納するのに適した整数データ型に変換されます。For example, if a column of values you import from Excel has no fractional values, Power BI Desktop will convert the entire column of data to a Whole Number data type, which is better suited for storing integers.

一部の DAX 関数はデータ型について特別な要件を持つため、どのデータ型に変換されるかは重要です。This is important because some DAX functions have special data type requirements. 多くの場合、DAX によってデータ型が暗黙的に変換されますが、データ型が変換されない場合もあります。While in many cases DAX will implicitly convert a data type for you, there are some cases where it will not. たとえば、日付データ型が必要な DAX 関数に対して、列のデータ型がテキストであると、DAX 関数は正しく機能しません。For instance, if a DAX function requires a Date data type and the data type for your column is Text, the DAX function will not work correctly. そのため、列に適切なデータ型が設定されることは、重要であり、便利です。So, it’s both important and useful to get the correct data type for a column. 暗黙的な変換については、この記事の後半で説明します。Implicit conversions are described later in this article.

列のデータ型を決定および指定するDetermine and specify a column’s data type

Power BI Desktop では、列のデータ型を、クエリ エディターで、あるいはデータ ビューまたはレポート ビューで確認し、指定できます。In Power BI Desktop, you can determine and specify a column’s data type in the Query Editor, or in Data View or Report View:

クエリ エディターのデータ型Data types in Query Editor

データ ビューまたはレポート ビューのデータ型Data types in Data View or Report View

クエリ エディターの [データ型] ドロップダウンには、現時点でデータ ビューまたはレポート ビューに存在しない 2 つのデータ型である 日付/時刻/タイムゾーン期間が含まれています。The Data Type drop down in Query Editor has two data types not currently present in Data or Report View: Date/Time/Timezone and Duration. これらのデータ型の列をモデルに読み込んでデータ ビューまたはレポート ビューで表示すると、日付/時刻/タイムゾーンデータ型の列は日付/時刻に変換され、期間データ型の列は 10 進数に変換されます。When a column with these data types are loaded into the model and viewed in Data or Report view, a column with a Date/Time/Timezone data type will be converted into a Date/Time, and a column with a Duration data type is converted into a Decimal Number.

数値型Number types

Power BI Desktop では、次の 3 つの数値型がサポートされています。Power BI Desktop supports three number types:

10 進数 – 64 ビット (8 バイト) の浮動小数点数を表します。Decimal Number – Represents a 64 bit (eight-byte) floating point number. これは最も一般的な数値型で、数値として通常想定される数に対応します。It’s the most common number type and corresponds to numbers as you usually think of them. 小数部の値を持つ数値を処理するように設計されていますが、整数を処理することもできます。Although designed to handle numbers with fractional values, it also handles whole numbers. 10 進数型で処理できる値は、負の値 -1.79E +308 から -2.23E -308 までと、0 と、正の値 2.23E -308 から 1.79E +308 までです。The Decimal Number type can handle negative values from -1.79E +308 through -2.23E -308, 0, and positive values from 2.23E -308 through 1.79E + 308. たとえば、34、34.01、34.000367063 などの数値は、10 進数として有効です。For example, numbers like 34, 34.01, and 34.000367063 are valid decimal numbers. 10 進数型で表現できる最も大きい値の長さは 15 桁です。The largest value that can be represented in a Decimal Number type is 15 digits long. 小数点区切り文字は、数値内の任意の位置に置くことができます。The decimal separator can occur anywhere in the number. 10 進数型は、Excel で数値を格納する方法に対応しています。The Decimal Number type corresponds to how Excel stores its numbers.

固定小数点 – 小数点区切り文字の位置は固定されています。Fixed Decimal Number – Has a fixed location for the decimal separator. 小数点区切り文字の右側には常に 4 桁の数字が入り、有効数字は最大 19 桁です。The decimal separator always has four digits to its right and allows for 19 digits of significance. 表現できる最も大きい値は 922,337,203,685,477.5807 (正または負) です。The largest value it can represent is 922,337,203,685,477.5807 (positive or negative). 固定小数点数型では、丸め処理を行うと誤差が出てしまう場合に便利です。The Fixed Decimal Number type is useful in cases where rounding might introduce errors. 小さい小数部の値を持つたくさんの数値を計算していると、そのような小数部が累積して数値が少しだけずれることがあります。When you work with many numbers that have small fractional values they can sometimes accumulate and force a number to be just slightly off. 小数点区切り文字の右側 4 桁より小さい値は切り捨てられるため、固定小数点数型は、その種の誤差を回避するために役立ちます。Since the values past the four digits to the right of decimal separator are truncated, the Fixed Decimal type can help you avoid these kinds of errors. SQL Server に慣れているなら、このデータ型は Decimal (19,4) に相当します。また、Power Pivot では通貨データ型に相当します。If you’re familiar with SQL Server, this data type corresponds to SQL Server’s Decimal (19,4), or the Currency Data type in Power Pivot.

整数 – 64 ビット (8 バイト) の整数値を表します。Whole Number – Represents a 64 bit (eight-byte) integer value. これは、整数なので、小数点の右側に桁はありません。Because it’s an integer, it has no digits to the right of the decimal place. 19 桁まで可能です。-9,223,372,036,854,775,808 (-2^63) から 9,223,372,036,854,775,807 (2^63-1) までの正または負の整数を格納できます。It allows for 19 digits; positive or negative whole numbers between -9,223,372,036,854,775,808 (-2^63) and 9,223,372,036,854,775,807 (2^63-1). 各種の数値データ型の中で、最大の数値を表現できます。It can represent the largest possible number of the various numeric data types. 固定小数点数型と同じように、丸め処理を制御する必要がある場合に整数型が便利です。As with the Fixed Decimal type, the Whole Number type can be useful in cases where you need to control rounding.

日付/時刻型Date/time types

Power BI Desktop では、クエリ ビューでは 5 つの日付/時刻型、レポート ビューとモデルでは 3 つの日付/時刻データ型がサポートされます。Power BI Desktop supports five Date/Time data types in Query View and three in the Report View and model. 日付/時刻/タイムゾーンと期間は、モデルに読み込まれる時点で変換されます。Both Date/Time/Timezone and Duration are converted during load into the model.

日付/時刻 – 日付と時刻の両方の値を表します。Date/Time – Represents both a date and time value. 背後の実際の値では、日付/時刻値は 10 進数型として保存されます。Underneath the covers, the Date/Time value is stored as a Decimal Number Type. そのため、実際にはこの 2 つの間で変換できます。So you can actually convert between the two. 日付値の時刻部分は、1/300 秒 (3.33ms) の整数倍の分数として保存されます。The time portion of a date is stored as a fraction to whole multiples of 1/300 seconds (3.33ms). 1900 年から 9999 年までの日付がサポートされます。Dates between years 1900 and 9999 are supported.

日付 – 日付だけを表します (時刻部分はありません)。Date – Represents just a Date (no time portion). モデルに変換される際、日付値は日付/時刻値の分数部分に 0 が入った値と同じになります。When converted into the model, a Date is the same as a Date/Time value with zero for the fractional value.

時刻 – 時刻だけを表します (日付部分はありません)。Time – Represents just Time (no Date portion). モデルに変換される際、時刻値は 日付/時刻値の小数点の左側に桁がない値と同じになります。When converted into the model, a Time value is the same as a Date/Time value with no digits to the left of the decimal place.

日付/時刻/タイムゾーン – UTC 日付/時刻を表します。Date/Time/Timezone – Represents a UTC Date/Time. 現時点では、モデルに読み込まれる際に日付/時刻に変換されます。Currently, it’s converted into Date/Time when loaded into the model.

期間 – 時間の長さを表します。Duration – Represents a length of time. モデルに読み込まれる際に 10 進数型に変換されます。It’s converted into a Decimal Number Type when loaded into the model. 10 進数型であれば、日付/時刻フィールドと加算または減算を行ったとき、正しい結果が得られます。As a Decimal Number type it can be added or subtracted from a Date/Time field with correct results. 10 進数型であれば、視覚化のときに大きさを示すために使用しやすくなります。As a Decimal Number type, you can easily use it in visualizations that show magnitude.

テキスト型Text type

テキスト - Unicode 文字のデータ文字列です。Text - A Unicode character data string. テキスト形式で表現した文字列、数値、または日付を格納できます。Can be strings, numbers or dates represented in a text format. 文字列の最大長は 268,435,456 Unicode 文字 (256 メガ文字) または 536,870,912 バイトです。Maximum string length is 268,435,456 Unicode characters (256 mega characters) or 536,870,912 bytes.

True/False 型True/false type

True/False – True または False のどちらかの値を示すブール値。True/False – A Boolean value of either a True or False.

空白または null 値型Blanks/nulls type

Blank - SQL の null を表し、null と置き換わる DAX データ型です。Blank - Is a data type in DAX that represents and replaces SQL nulls. BLANK 関数を使用すると、空白を作成できます。空白かどうかをテストするには、ISBLANK 論理関数を使用します。You can create a blank by using the BLANK function, and test for blanks by using the ISBLANK logical function.

テーブル データ型Table data type

DAX では、集計やタイム インテリジェンス計算など、多くの関数でテーブル データ型を使用します。DAX uses a table data type in many functions, such as aggregations and time intelligence calculations. 一部の関数は、テーブルへの参照を必要とします。また、関数からテーブルが返され、そのテーブルを他の関数への入力として使用できる場合もあります。Some functions require a reference to a table; other functions return a table that can then be used as input to other functions. 入力としてテーブルを必要とするいくつかの関数では、テーブルに評価される式を指定できます。また、ベース テーブルへの参照を必要とする関数もあります。In some functions that require a table as input, you can specify an expression that evaluates to a table; for some functions, a reference to a base table is required. 特定の関数の要件については、「DAX 関数リファレンス」をご覧ください。For information about the requirements of specific functions, see DAX Function Reference.

DAX 数式で暗黙的および明示的なデータ型の変換Implicit and explicit data type conversion in DAX formulas

各 DAX 関数には、入力と出力として使用するデータの型について特定の要件があります。Each DAX function has specific requirements as to the types of data that are used as inputs and outputs. たとえば、引数としていつかの整数といくつかの日付を必要とする関数があります。テキストやテーブルを必要とする関数もあります。For example, some functions require integers for some arguments and dates for others; other functions require text or tables.

引数として指定した列に含まれるデータに、関数で必要になるデータ型と互換性がない場合、DAX では多くの場合にエラーが返されます。If the data in the column you specify as an argument is incompatible with the data type required by the function, DAX in many cases will return an error. ただし、可能な場合には、必要なデータ型への変換が DAX によって暗黙的に行われます。However, wherever possible DAX will attempt to implicitly convert the data to the required data type. 例:For example:

  • 日付を文字列型にすることができます。その場合、DAX によって文字列が解析され、Windows の日付や時刻の形式のいずれかとしてキャストが行われます。You can type a date as a string, and DAX will parse the string and attempt to cast it as one of the Windows date and time formats.
  • TRUE に 1 を加算することができます。その結果は 2 です。TRUE は暗黙的に数値 1 に変換され、1+1 という演算が行われます。You can add TRUE + 1 and get the result 2, because TRUE is implicitly converted to the number 1 and the operation 1+1 is performed.
  • 2 つの列に含まれる値を加算する場合に、1 つの値がテキスト ("12")、もう 1 つの値が数値 (12) として表現されている場合、DAX によって文字列が数値に暗黙的に変換され、数値の結果に対して加算が行われます。If you add values in two columns, and one value happens to be represented as text ("12") and the other as a number (12), DAX implicitly converts the string to a number and then does the addition for a numeric result. 式 "22" + 22 は、44 という結果を返します。The following expression returns 44: = "22" + 22.
  • 2 つの数値を連結しようとすると、Excel によってそれらの数値が文字列表現に変換されてから、連結されます。If you attempt to concatenate two numbers, Excel will present them as strings and then concatenate. 式 12 &34;は、"1234" という結果を返します。The following expression returns "1234": = 12 & 34.

暗黙的なデータ変換のテーブルTable of implicit data conversions

実行される変換の種類は、演算子によって決まります。要求された演算を実行する前に、演算子に必要な値へのキャストが行われます。The type of conversion that is performed is determined by the operator, which casts the values it requires before performing the requested operation. 以下の表に、演算子の一覧と、各列のデータ型を交差する行のデータ型と組み合わせた場合に実行される変換を示します。These tables list the operators, and indicate the conversion that is performed on each data type in the column when it is paired with the data type in the intersecting row.

注意

テキスト データ型は、これらの表に含まれていません。Text data types are not included in these tables. 数値がテキスト形式で表されている場合、Power BI は数値の種類を特定し、数値として表現しようとします。When a number is represented as in a text format, in some cases Power BI will attempt to determine the number type and represent it as a number.

加算 (+)Addition (+)

演算子 (+)Operator(+) 整数INTEGER 通貨CURRENCY 実数REAL 日付/時刻Date/time
整数INTEGER 整数INTEGER 通貨CURRENCY 実数REAL 日付/時刻Date/time
通貨CURRENCY 通貨CURRENCY 通貨CURRENCY 実数REAL 日付/時刻Date/time
実数REAL 実数REAL 実数REAL 実数REAL 日付/時刻Date/time
日付/時刻Date/time 日付/時刻Date/time 日付/時刻Date/time 日付/時刻Date/time 日付/時刻Date/time

たとえば、通貨値と組み合わせる加算演算で実数を使用した場合であれば、両方の値が実数に変換され、結果は実数として返されます。For example, if a real number is used in an addition operation in combination with currency data, both values are converted to REAL, and the result is returned as REAL.

減算 (-)Subtraction (-)

次の表で、行見出しは被減数 (左側) で、列見出しは減数 (右側) です。In the following table the row header is the minuend (left side) and the column header is the subtrahend (right side).

演算子 (-)Operator(-) 整数INTEGER 通貨CURRENCY 実数REAL 日付/時刻Date/time
整数INTEGER 整数INTEGER 通貨CURRENCY 実数REAL 実数REAL
通貨CURRENCY 通貨CURRENCY 通貨CURRENCY 実数REAL 実数REAL
実数REAL 実数REAL 実数REAL 実数REAL 実数REAL
日付/時刻Date/time 日付/時刻Date/time 日付/時刻Date/time 日付/時刻Date/time 日付/時刻Date/time

たとえば、日付と他のデータ型で減算を行う場合、両方の値が日付に変換され、返される値も日付です。For example, if a date is used in a subtraction operation with any other data type, both values are converted to dates, and the return value is also a date.

注意

データ モデルでは単項演算子 - (負号) もサポートしていますが、この演算子はオペランドのデータ型を変更しません。Data models also support the unary operator, - (negative), but this operator does not change the data type of the operand.

乗算 (*)Multiplication(*)

演算子(*)Operator(*) 整数INTEGER 通貨CURRENCY 実数REAL 日付/時刻Date/time
整数INTEGER 整数INTEGER 通貨CURRENCY 実数REAL 整数INTEGER
通貨CURRENCY 通貨CURRENCY 実数REAL 通貨CURRENCY 通貨CURRENCY
実数REAL 実数REAL 通貨CURRENCY 実数REAL 実数REAL

たとえば、乗算演算で整数を実数と組み合わせると、両方の数値が実数に変換され、返される値も実数です。For example, if an integer is combined with a real number in a multiplication operation, both numbers are converted to real numbers, and the return value is also REAL.

除算 (/)Division (/)

次の表では、行見出しが分子、列見出しが分母です。In the following table, the row header is the numerator and the column header is the denominator.

演算子 (/) (行/列)Operator(/) (Row/Column) 整数INTEGER 通貨CURRENCY 実数REAL 日付/時刻Date/time
整数INTEGER 実数REAL 通貨CURRENCY 実数REAL 実数REAL
通貨CURRENCY 通貨CURRENCY 実数REAL 通貨CURRENCY 実数REAL
実数REAL 実数REAL 実数REAL 実数REAL 実数REAL
日付/時刻Date/time 実数REAL 実数REAL 実数REAL 実数REAL

たとえば、除算演算で整数を通貨値と組み合わせると、両方の値が実数に変換され、結果も実数になります。For example, if an integer is combined with a currency value in a division operation, both values are converted to real numbers, and the result is also a real number.

比較演算子Comparison operators

比較式では、ブール値は文字列値より大きいと見なされます。文字列値は数値または日付/時刻値よりも大きいと見なされます。数値と日付/時刻値は同じランクであると見なされます。In comparison expressions, Boolean values are considered greater than string values and string values are considered greater than numeric or date/time values; numbers and date/time values are considered to have the same rank. ブール値または文字列値については暗黙的な変換は実行されません。BLANK または空白値は、他方の比較値のデータ型に応じて 0 /""/false に変換されます。No implicit conversions are performed for Boolean or string values; BLANK or a blank value is converted to 0/""/false depending on the data type of the other compared value.

次の DAX 式に、この動作の例を示します。The following DAX expressions illustrate this behavior:

=IF(FALSE()>"true","Expression is true", "Expression is false") は "Expression is true" を返します。=IF(FALSE()>"true","Expression is true", "Expression is false"), returns "Expression is true"

=IF("12">12,"Expression is true", "Expression is false") は "Expression is true" を返します。=IF("12">12,"Expression is true", "Expression is false"), returns "Expression is true".

=IF("12"=12,"Expression is true", "Expression is false") は "Expression is false" を返します。=IF("12"=12,"Expression is true", "Expression is false"), returns "Expression is false"

数値型または日付/時刻型については、次の表に示すように暗黙的に変換されます。Conversions are performed implicitly for numeric or date/time types as described in the following table:

比較演算子Comparison Operator 整数INTEGER 通貨CURRENCY 実数REAL 日付/時刻Date/time
整数INTEGER 整数INTEGER 通貨CURRENCY 実数REAL 実数REAL
通貨CURRENCY 通貨CURRENCY 通貨CURRENCY 実数REAL 実数REAL
実数REAL 実数REAL 実数REAL 実数REAL 実数REAL
日付/時刻Date/time 実数REAL 実数REAL 実数REAL 日付/時刻Date/Time

空白、空の文字列、およびゼロ値の処理Handling blanks, empty strings, and zero values

DAX では、null、空白値、空のセル、または欠落値はすべて、同じ新しい値型である BLANK で表されます。In DAX, a null, blank value, empty cell, or a missing value are all represented by the same new value type, a BLANK. BLANK 関数を使用すると、空白を生成することもできます。空白かどうかをテストするには、ISBLANK 関数を使用します。You can also generate blanks by using the BLANK function, or test for blanks by using the ISBLANK function.

加算や連結などの操作で空白が処理される方法は、個々の関数によって異なります。How blanks are handled in operations such as addition or concatenation depends on the individual function. 次の表は、DAX と Microsoft Excel の数式で空白が処理される方法の違いをまとめたものです。The following table summarizes the differences between DAX and Microsoft Excel formulas, in the way that blanks are handled.

Expression DAXDAX ExcelExcel
BLANK + BLANKBLANK + BLANK BLANKBLANK 0 (ゼロ)0(zero)
BLANK + 5BLANK + 5 55 55
BLANK * 5BLANK * 5 BLANKBLANK 0 (ゼロ)0(zero)
5/BLANK5/BLANK 無限大Infinity エラーError
0/BLANK0/BLANK NaNNaN エラーError
BLANK/BLANKBLANK/BLANK BLANKBLANK エラーError
FALSE OR BLANKFALSE OR BLANK FALSEFALSE FALSEFALSE
FALSE AND BLANKFALSE AND BLANK FALSEFALSE FALSEFALSE
TRUE OR BLANKTRUE OR BLANK TRUETRUE TRUETRUE
TRUE AND BLANKTRUE AND BLANK FALSEFALSE TRUETRUE
BLANK OR BLANKBLANK OR BLANK BLANKBLANK エラーError
BLANK AND BLANKBLANK AND BLANK BLANKBLANK エラーError