トレーニング
Power Query のデータ型
Power Query のデータ型は、値を分類して、より構造化されたデータ セットを得るために使用されます。 データ型はフィールド レベルで定義されます。フィールド内の値は、フィールドのデータ型に準拠するように設定されます。
列のデータ型は、列見出しの左側に、データ型を示すアイコンと共に表示されます。
注意
Power Query には、列のデータ型に基づいて、一連のコンテキスト変換とオプションが用意されています。 たとえば、データ型が Date の列を選択すると、その特定のデータ型に適用される変換とオプションが得られます。 これらの変換とオプションは、[変換] タブや [列の追加] タブ、スマート フィルター オプションなど、Power Query インターフェイス全体で実行されます。
次の表に、Power Query で使用される最も一般的なデータ型を示します。 この記事では説明しませんが、Power Query M 数式言語のデータ型の完全な一覧については、「型」を参照してください。
データの種類 | Icon | 説明 |
---|---|---|
テキスト | Unicode 文字データ文字列。 テキスト形式で表された文字列、数値、または日付を使用できます。 最大文字列長は、268,435,456 文字の Unicode 文字 (各 Unicode 文字は 2 バイト) または 536,870,912 バイトです。 | |
真/偽 | True または False のいずれかのブール値。 | |
10 進数 | 64 ビット (8 バイト) の浮動小数点数を表します。 これは最も一般的な数値型で、数値として通常想定される数に対応します。 小数値を含む数値を処理するように設計されていますが、整数も処理できます。 Decimal Number タイプは、-1.79E +308 から –2.23E –308、0 までの負の値、および 2.23E –308 から 1.79E + 308 までの正の値を処理できます。 たとえば、34、34.01、34.000367063 などの数値は有効な 10 進数です。 Decimal Number タイプで表現できる最大精度は 15 桁です。 小数点区切り文字は、数値内の任意の位置に置くことができます。 Decimal Number タイプは、Excel が数値を格納する方法に対応します。 バイナリ浮動小数点数は、サポートされる範囲内のすべての数値を 100% の精度で表すことができないことに注意してください。 そのため、特定の 10 進数を表すときに、精度の細かい違いが発生する可能性があります。 | |
固定小数点数 | このデータ型は、通貨型とも呼ばれ、小数点区切り文字について固定位置を持ちます。 小数点区切り文字の右側には常に 4 桁があり、有効桁数は 19 桁になります。 表現できる最大値は 922,337,203,685,477.5807 (正または負) です。 10 進数とは異なり、固定小数点数型は常に正確であるため、浮動小数点表記の不正確性によって誤差が発生する可能性がある場合に便利です。 | |
整数 | 64 ビット (8 バイト) の整数値を表します。 これは、整数なので、小数点の右側に桁はありません。 19桁の数字、つまり-9,223,372,036,854,775,807 (-2^63+1)から9,223,372,036,854,775,806 (2^63-2)までの正負の整数を許容します。 さまざまな数値データ型の最大の精度を表すことができます。 固定小数点数型と同じように、丸め処理を制御する必要がある場合に整数型が便利です。 | |
Percentage | 基本的には 10 進数型と同じですが、Power Query エディター ウィンドウで列の値をパーセンテージとして書式設定するマスクがあります。 | |
日付/時刻 | 日付と時刻の両方の値を表します。 内部では、日付/時刻値は 10 進数型として格納されるので、実際に 2 つの間で変換できます。 日付の時刻部分は、1/300 秒 (3.33 ミリ秒) の整数倍の小数として保存されます。 1900 年から 9999 年までの日付がサポートされます。 | |
日付 | 日付だけを表します (時刻部分はありません)。 モデルに変換すると、日付は日付/時刻値と同じであり、小数値はゼロになります。 | |
時刻 | 時刻だけを表します (日付部分はありません)。 モデルに変換されると、時刻値は、小数点以下の桁を除いた日付/時刻値と同じになります。 | |
日付/時刻/タイムゾーン | UTC の日付/時刻とタイムゾーン オフセットを表します。 モデルに読み込まれる際に日付/時刻に変換されます。 | |
期間 | 時間の長さを表します。モデルに読み込まれる際に 10 進数型に変換されます。 10 進数型であれば、日付/時刻フィールドと加算または減算を行ったとき、正しい結果が得られます。 10 進数型であるため、視覚化のときに大きさを示すために使用しやすくなります。 | |
Binary | バイナリ データ型は、バイナリ形式で他のデータを表すために使用できます。 | |
[任意] | 任意のデータ型は、明示的なデータ型定義がない列に対して指定された状態です。 すべての値を分類するデータ型です。 非構造化ソースからはクエリの列データ型を常に明示的に定義し、クエリの出力として任意のデータ型の列を使用しないようにすることをお勧めします。 |
以下に接続するときには、データ型の検出が自動的に行われます。
データベースなどの構造化データ ソース。Power Query では、データ ソースからテーブル スキーマを読み取って、各列の正しいデータ型を使用してデータが自動的に表示されます。
Excel、CSV、テキスト ファイルなどの非構造化ソース。Power Query では、テーブル内の値を調べてデータ型が自動的に検出されます。 既定の Power Query では、非構造化ソースの場合、自動データ型検出が有効になります。
また、[変換] タブの [任意の列] グループにある [データ型の検出] コマンドを使用して、テーブル内の列のデータ型を自動的に検出することもできます。
列のデータ型を定義または変更するには、次の 4 つの場所のいずれかを使用します。
[ホーム] タブの [変換] グループにある [データ型] ドロップダウン メニュー。
[変換] タブの [任意の列] グループにある [データ型] ドロップダウン メニュー。
列見出しの左側にあるアイコンを選択します。
列のショートカット メニューの [型の変更]。
この設定は非構造化ソース専用です。 これは、テーブルの最初の 200 行を検査して、列の型とヘッダーを自動的に検出します。 この設定を有効にすると、Power Query によって、2 つのステップがクエリに自動的に追加されます。
- 列ヘッダーの昇格: テーブルの最初の行を列ヘッダーに昇格します。
- 変更された型: 任意のデータ型の値を、各列の値の検査に基づいたデータ型に変換します。
既定では、この設定は有効です。 この設定を無効または有効にするには、Power Query エクスペリエンスに適用されるステップに従います。
Power Query Online で自動データ型検出を構成するには
[ホーム] タブの [オプション] を選択し、[プロジェクト オプション] を選択します。 [プロジェクト オプション] ウィンドウで、[非構造化ソースの列の型とヘッダーを自動的に検出します] チェック ボックスをオンにします。
Power Query for Desktop で自動データ型検出を構成するには
この動作は、[オプション] ウィンドウでグローバルとファイル単位の両方のレベルで定義できます (Power Query エディターの [ファイル] タブで、[オプションと設定]>[オプション] を選択します)。
[グローバル]: 左側のウィンドウの [グローバル] で、[データの読み込み] を選択します。 右側のウィンドウの [型の検出] で、3 つの型検出構成のいずれかを選択できます。これはアプリケーションで新しいファイルを作成するたびに適用されます。
- 非構造化ソースの列の型とヘッダーを常に検出する
- 各ファイルの設定に応じて、非構造化ソースの列の型とヘッダーを検出する
- 非構造化ソースの列の型とヘッダーを検出しない
[現在のファイル]: 左側のウィンドウの [現在のファイル] で、[データの読み込み] を選択します。 右側のウィンドウの [型の検出] で、現在のファイルの型検出を有効にするか無効にするかを選択します。
Power Query では、外観と解釈方法を管理する 2 つの異なるコンポーネントが処理されます。
- ローカリゼーション: 表示する言語を Power Query に示すコンポーネント。
- グローバリゼーション: テキスト値の解釈に加えて、値の書式設定を処理するコンポーネント。
"ロケール" は、ローカリゼーション コンポーネントとグローバリゼーション コンポーネントの両方を保持する単一の値です。 ロケールは、テキスト値を解釈し、他のデータ型に変換するために使用されます。 たとえば、ロケール [英語 (米国)] は、"ローカリゼーション" が米国英語で、"グローバリゼーション" (値の形式) が米国で使用される標準に基づくことを意味します。
Power Query で列データ型を定義する場合、またはデータ型間で変換する場合は、変換する値を解釈してから別のデータ型に変換する必要があります。
Power Query Online では、この解釈は、[ロケール] の [プロジェクト オプション] で定義されます。
Power Query for Desktop では、オペレーティング システムのリージョン形式が自動的に認識され、これを使用してデータ型変換の値が解釈されます。 このロケール構成をオーバーライドするには、クエリの [オプション] ウィンドウを開き、左側のウィンドウの [現在のファイル] の下にある [地域の設定] を選択します。 ここから、ロケールを必要な設定に変更できます。
このロケール設定は、テキスト値を特定のデータ型に解釈するために重要です。 たとえば、ロケールが [英語 (米国)] に設定されているが、CSV ファイルの 1 つの列は日付が日/月/年の英国形式で書式設定されているとします。
Date 列のデータ型を Date に設定すると、エラー値が表示されます。
これらのエラーは、使用されているロケールが英語 (米国) 形式 (月/日/年) で日付を解釈しようとしているため発生します。 カレンダーに 22 月はないので、エラーが発生します。
Date データ型を選択する代わりに、列見出しを右クリックし、[型の変更] を選択してから、[ロケールを使用] を選択します。
[ロケールを使用して列の型を変更する] ダイアログ ボックスで設定するデータ型を選択しますが、使用するロケールも選択します。この場合は [英語 (英国)] である必要があります。
このロケールを使用すると、Power Query で値を正しく解釈し、それらの値を適切なデータ型に変換できます。
最終的な日付値を確認するには
値の書式設定は、グローバリゼーション値によって行われます。 Power Query によって表示される値に疑問がある場合は、日、月、年の新しい列を値から追加することで、日付値の変換を確認できます。 これを行うには、[Date] 列を選択し、リボンの [列の追加] タブに移動します。 [日時列] グループに、日付列のオプションが表示されます。
ここから、年番号、月番号、日番号、Date 列から抽出された列など、日付値の一部を抽出できます。
これらの列を使用すると、日付の値が正しく変換されていることを確認できます。
次のマトリックスは、あるデータ型から別のデータ型への値のデータ型変換について、実現可能性を簡単に確認するためのものです。
注意
この行列での変換は、データ型 列の元のデータ型から始まります。 新しい型への変換の各結果は、元のデータ型の行に表示されます。
データ型 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
10進数 | — | ||||||||||
通貨 | — | ||||||||||
整数 | — | ||||||||||
パーセンテージ | — | ||||||||||
日付/時刻 | — | ||||||||||
日付 | — | ||||||||||
時刻 | — | ||||||||||
日付/時刻/タイムゾーン | — | ||||||||||
Duration | — | ||||||||||
Text | — | ||||||||||
True/False | — |
Icon | 説明 |
---|---|
可能 | |
不可能 | |
可能。ただし、元の値に値が追加される | |
可能。ただし、元の値が切り捨てられる |