Power Query のデータ型

Power Query のデータ型は、値を分類して、より構造化されたデータセットを得るために使用されます。 データ型はフィールド レベルで定義されます。フィールド内の値は、フィールドのデータ型に 準拠 するように設定されます。

列のデータ型は、列見出しの左側に、データ型を示すアイコンと共に表示されます。

Shows common data type icons displayed on the left side of the table column heading in the data preview pane.

注意

Power Query には、列のデータ型に基づいて、一連のコンテキスト変換とオプションが用意されています。 たとえば、データ型が Date の列を選択すると、その特定のデータ型に適用される変換とオプションが得られます。 これらの変換とオプションは、 [変換] タブや [列の追加] タブ、スマート フィルター オプションなど、Power Query インターフェイス全体で実行されます。

次の表に、Power Query で使用される最も一般的なデータ型を示します。 この記事では説明しませんが、Power Query M 数式言語のデータ型の完全な一覧については、「」を参照してください。

データ型 アイコン 説明
[テキスト] Text. Unicode 文字データ文字列。 テキスト形式で表現した文字列、数値、または日付を格納できます。 最大文字列長は、268,435,456 文字の Unicode 文字 (各 Unicode 文字は 2 バイト) または 536,870,912 バイトです。
True/False True/False. True または False のいずれかのブール値。
10 進数 Decimal Number. 64 ビット (8 バイト) の浮動小数点数を表します。 これは最も一般的な数値型で、数値として通常想定される数に対応します。 小数部の値を持つ数値を処理するように設計されていますが、整数を処理することもできます。 10 進数型は、-1.79E +308 ~ –2.23E –308、0、および 2.23E –308 ~ 1.79E + 308 の正の値を処理できます。 たとえば、34、34.01、34.000367063 などの数値は、10 進数として有効です。 10 進数型で表現できる最大の精度は 15 桁です。 小数点区切り文字は、数値内の任意の位置に置くことができます。 10 進数型は、Excel で数値を格納する方法に対応しています。 バイナリ浮動小数点数は、サポートされる範囲内のすべての数値を 100% の精度で表すことができないことに注意してください。 そのため、特定の 10 進数を表すときに、精度の細かい違いが発生する可能性があります。
固定小数点数 Currency. このデータ型は、通貨型とも呼ばれ、小数点区切り文字について固定位置を持ちます。 小数点区切り文字の右側には常に 4 桁の数字が入り、有効数字は最大 19 桁です。 表現できる最も大きい値は 922,337,203,685,477.5807 (正または負) です。 10 進数とは異なり、固定小数点数型は常に正確であるため、浮動小数点表記の不正確性によって誤差が発生する可能性がある場合に便利です。
整数 Whole Number. 64 ビット (8 バイト) の整数値を表します。 これは、整数なので、小数点の右側に桁はありません。 19 桁の数字を使用できます。-9,223,372,036,854,775,807 (–2^63+1) ~ 9,223,372,036,854,775,806 (2^63-2) の正または負の整数。 各種の数値データ型の中で、最大の精度を表現できます。 固定小数点数型と同じように、丸め処理を制御する必要がある場合に整数型が便利です。
Percentage Percentage. 基本的には 10 進数型と同じですが、Power Query エディター ウィンドウで列の値をパーセンテージとして書式設定するマスクがあります。
日付/時刻 Date/Time. 日付と時刻の両方の値を表します。 内部では、日付/時刻値は 10 進数型として格納されるので、実際に 2 つの間で変換できます。 日付値の時刻部分は、1/300 秒 (3.33 ミリ秒) の整数倍の分数として保存されます。 1900 年から 9999 年までの日付がサポートされます。
日付 Date. 日付だけを表します (時刻部分はありません)。 モデルに変換される際、日付値は日付/時刻値の分数部分に 0 が入った値と同じになります。
時刻 Time. 時刻だけを表します (日付部分はありません)。 モデルに変換される際、時刻値は 日付/時刻値の小数点の左側に桁がない値と同じになります。
日付/時刻/タイムゾーン Date/Time/Timezone. UTC の日付/時刻とタイムゾーン オフセットを表します。 モデルに読み込まれる際に日付/時刻に変換されます。
期間 Duration. 時間の長さを表します。モデルに読み込まれる際に 10 進数型に変換されます。 10 進数型であれば、日付/時刻フィールドと加算または減算を行ったとき、正しい結果が得られます。 10 進数型であるため、視覚化のときに大きさを示すために使用しやすくなります。
Binary Binary. バイナリ データ型を使用すれば、バイナリ形式のその他のデータを表すことができます。
[任意] Any. 任意のデータ型は、明示的なデータ型定義がない列に対して指定された状態です。 すべての値を分類するデータ型です。 非構造化ソースからはクエリの列データ型を常に明示的に定義し、クエリの出力として任意のデータ型の列を使用しないようにすることをお勧めします。

データ型検出

以下に接続するときには、データ型の検出が自動的に行われます。

  • データベースなどの構造化データ ソース。Power Query では、データ ソースからテーブル スキーマを読み取って、各列の正しいデータ型を使用してデータが自動的に表示されます。

  • Excel、CSV、テキスト ファイルなどの非構造化ソース。Power Query では、テーブル内の値を調べてデータ型が自動的に検出されます。 既定の Power Query では、非構造化ソースの場合、自動データ型検出が有効になります。

また、 [変換] タブの [任意の列] グループにある [データ型の検出] コマンドを使用して、テーブル内の列のデータ型を自動的に検出することもできます。

Detect data type command on the Transform tab.

列のデータ型を定義する方法

列のデータ型を定義または変更するには、次の 4 つの場所のいずれかを使用します。

  • [ホーム] タブの [変換] グループにある [データ型] ドロップダウン メニュー。

    Data type menu on the Home tab.

  • [変換] タブの [任意の列] グループにある [データ型] ドロップダウン メニュー。

    Data type menu on the Transform tab.

  • 列見出しの左側にあるアイコンを選択します。

    Data type menu in the column heading.

  • 列のショートカット メニューの [型の変更]

    Change type command on the column shortcut menu.

列のデータ型とヘッダーの自動検出

この設定は非構造化ソース専用です。 これは、テーブルの最初の 200 行を検査して、列の型とヘッダーを自動的に検出します。 この設定を有効にすると、Power Query によって、2 つのステップがクエリに自動的に追加されます。

  • 列ヘッダーの昇格: テーブルの最初の行を列ヘッダーに昇格します。
  • 変更された型: 任意のデータ型の値を、各列の値の検査に基づいたデータ型に変換します。

既定では、この設定が有効になっています。 この設定を無効または有効にするには、Power Query エクスペリエンスに適用されるステップに従います。

Power Query Online で自動データ型検出を構成するには

[ホーム] タブの [オプション] を選択し、 [プロジェクト オプション] を選択します。 [プロジェクト オプション] ウィンドウで、 [非構造化ソースの列の型とヘッダーを自動的に検出します] チェック ボックスをオンにします。

Automatically detect data type option in project options.

Power Query for Desktop で自動データ型検出を構成するには

この動作は、 [オプション] ウィンドウでグローバルとファイル単位の両方のレベルで定義できます (Power Query エディターの [ファイル] タブで、 [オプションと設定]>[オプション] を選択します)。

  • [グローバル] : 左側のウィンドウの [グローバル] で、 [データの読み込み] を選択します。 右側のウィンドウの [型の検出] で、3 つの型検出構成のいずれかを選択できます。これはアプリケーションで新しいファイルを作成するたびに適用されます。

    • 非構造化ソースの列の型とヘッダーを常に検出する
    • 各ファイルの設定に応じて、非構造化ソースの列の型とヘッダーを検出する
    • 非構造化ソースの列の型とヘッダーを検出しない

    Global type detection.

  • [現在のファイル] : 左側のウィンドウの [現在のファイル] で、 [データの読み込み] を選択します。 右側のウィンドウの [型の検出] で、現在のファイルの型検出を有効にするか無効にするかを選択します。

    Automatically detect data type option in Power Query for Desktop.

ドキュメントまたはプロジェクトのロケール

Power Query では、外観と解釈方法を管理する 2 つの異なるコンポーネントが処理されます。

  • ローカリゼーション: 表示する言語を Power Query に示すコンポーネント。
  • グローバリゼーション: テキスト値の解釈に加えて、値の書式設定を処理するコンポーネント。

"ロケール" は、ローカリゼーション コンポーネントとグローバリゼーション コンポーネントの両方を保持する単一の値です。 ロケールは、テキスト値を解釈し、他のデータ型に変換するために使用されます。 たとえば、ロケール [英語 (米国)] は、"ローカリゼーション" が米国英語で、"グローバリゼーション" (値の形式) が米国で使用される標準に基づくことを意味します。

Power Query で列データ型を定義する場合、またはデータ型間で変換する場合は、変換する値を解釈してから別のデータ型に変換する必要があります。

  • Power Query Online では、この解釈は、 [ロケール][プロジェクト オプション] で定義されます。

    Locale setting in Power Query Online.

  • Power Query for Desktop では、オペレーティング システムのリージョン形式が自動的に認識され、これを使用してデータ型変換の値が解釈されます。 このロケール構成をオーバーライドするには、クエリの [オプション] ウィンドウを開き、左側のウィンドウの [現在のファイル] の下にある [地域の設定] を選択します。 ここから、ロケールを必要な設定に変更できます。

    Locale setting in Power Query for Desktop.

このロケール設定は、テキスト値を特定のデータ型に解釈するために重要です。 たとえば、ロケールが [英語 (米国)] に設定されているが、CSV ファイルの 1 つの列は日付が日/月/年の英国形式で書式設定されているとします。

Sample original table with dates in the Date column set to UK format of day, then month, then year.

Date 列のデータ型を Date に設定すると、エラー値が表示されます。

Data type conversion error.

これらのエラーは、使用されているロケールが英語 (米国) 形式 (月/日/年) で日付を解釈しようとしているため発生します。 カレンダーに 22 月はないので、エラーが発生します。

Date データ型を選択する代わりに、列見出しを右クリックし、 [型の変更] を選択してから、 [ロケールを使用] を選択します。

Using locale on the column shortcut menu.

[ロケールを使用して列の型を変更する] ダイアログ ボックスで設定するデータ型を選択しますが、使用するロケールも選択します。この場合は [英語 (英国)] である必要があります。

Change column type with locale.

このロケールを使用すると、Power Query で値を正しく解釈し、それらの値を適切なデータ型に変換できます。

Final table after using locale, with the dates in the Date column set to US format of month, then day, then year.

最終的な日付値を確認するには

値の書式設定は、グローバリゼーション値によって行われます。 Power Query によって表示される値に疑問がある場合は、日、月、年の新しい列を値から追加することで、日付値の変換を確認できます。 これを行うには、 [Date] 列を選択し、リボンの [列の追加] タブに移動します。 [日時列] グループに、日付列のオプションが表示されます。

Selecting portions of the date column value to be placed in a new column.

ここから、年番号、月番号、日番号、Date 列から抽出された列など、日付値の一部を抽出できます。

Date parts.

これらの列を使用すると、日付の値が正しく変換されていることを確認できます。

データ型変換マトリックス

次のマトリックスは、あるデータ型から別のデータ型への値のデータ型変換について、実現可能性を簡単に確認するためのものです。

データ型 Decimal number. Currency Whole number Percentage Date/Time Date Time Date/Time/Timezone Duration Text True/False
Decimal number. 10 進数 Possible, but it truncates the original value Possible, but it truncates the original value Possible. Possible Possible, but it truncates the original value Not possible. Possible, but it adds values to the original value. Possible Possible Possible
Currency. 通貨 Possible Possible, but it truncates the original value Possible Possible Possible, but it truncates the original value Not possible Possible, but it adds values to the original value Possible Possible Possible
Whole number. 整数 Possible Possible Possible Possible Possible Not possible Possible, but it adds values to the original value Possible Possible Possible
Percentage. 割合 Possible Possible, but it truncates the original value Possible, but it truncates the original value Possible Possible Not possible Possible, but it adds values to the original value Possible Possible Possible
Date/Time. 日付/時刻 Possible Possible, but it truncates the original value Possible, but it truncates the original value Possible Possible, but it truncates the original value Possible, but it truncates the original value Possible, but it adds values to the original value Not possible Possible Not possible
Date. 日付 Possible Possible Possible Possible Possible Not possible Possible, but it adds values to the original value Not possible Possible Not possible
Time. 時間 Possible Possible Possible Possible Possible, but it adds values to the original value Not possible Possible, but it adds values to the original value Not possible Possible Not possible
Date/Time/Timezone. 日付/時刻/タイムゾーン Possible Possible, but it truncates the original value Possible, but it truncates the original value Possible Possible, but it truncates the original value Possible, but it truncates the original value Possible, but it truncates the original value Not possible Possible Not possible
Duration. Duration Possible Possible, but it truncates the original value Possible, but it truncates the original value Possible Not possible Not possible Not possible Not possible Possible Not possible
Text. テキスト Possible Possible Possible Possible Possible Possible Possible Possible Possible Possible
True/False. True/False Possible Possible Possible Possible Not possible Not possible Not possible Not possible Not possible Possible
アイコン 説明
Possible 可能
Not possible 不可能
Possible, but it adds values to the original value 可能。ただし、元の値に値が追加される
Possible, but it truncates the original value. 可能。ただし、元の値が切り捨てられる