適用対象:✅Microsoft Fabric のウェアハウス
この記事では、Microsoft Fabric でテーブルを設計するための重要な概念について詳しく説明します。
テーブルでは、データが論理的に行と列の形式にまとめられます。 各行は一意なレコードを表し、各列はレコードのフィールドを表します。
- ウェアハウスでは、テーブルはすべてのトランザクション データが含まれるデータベース オブジェクトでます。
テーブル カテゴリを決定する
スター スキーマ は、データを ファクト テーブル と ディメンション テーブル に編成します。 一部のテーブルは、ファクト テーブルまたはディメンション テーブルに移動する前に統合またはステージング データに使用されます。 テーブルを設計する際には、テーブルのデータがファクト、ディメンション、統合のいずれのテーブルに属するかを決定します。 この決定により、適切なテーブル構造体が通知されます。
ファクト テーブルには、一般にトランザクション システムで生成された後、データ ウェアハウスに読み込まれる定量的データが含まれています。 たとえば、小売業では販売トランザクションを毎日生成した後、そのデータを分析のためにデータ ウェアハウス ファクト テーブルに読み込みます。
ディメンション テーブルには、変化する可能性はあるが通常は変更頻度が低い属性データが含まれます。 たとえば、顧客の名前と住所はディメンション テーブルに格納され、その顧客のプロファイルが変更された場合にのみ更新されます。 大規模なファクト テーブルのサイズを最小限に抑えるために、ファクト テーブルのすべての行に顧客の名前と住所を格納する必要はありません。 代わりに、ファクト テーブルとディメンション テーブルで顧客 ID を共有できます。 クエリで 2 つのテーブルを結合して、顧客のプロファイルとトランザクションに関連付けることができます。
統合テーブルは、統合またはステージング データの場所を提供します。 たとえば、ステージング テーブルにデータを読み込み、ステージングでデータの変換を実行してから、データを運用環境テーブルに挿入できます。
テーブルは、ウェアハウスの一部として OneLake にデータを格納します。 テーブルとデータは、セッションが開かれているかどうかにかかわらず保持されます。
倉庫内のテーブル
テーブルの構成を表示するには、テーブル名のプレフィックスとして fact、dim、または int を使用できます。 次の表に、WideWorldImportersDW というサンプル データ ウェアハウスのスキーマ名とテーブル名の一部を示します。
| WideWorldImportersDW ソース テーブル名 | テーブルの種類 | データ ウェアハウス テーブル名 |
|---|---|---|
| 市 | ディメンション | wwi.DimCity |
| 受注 | ファクト | wwi.FactOrder |
- テーブル名に
/や\を含めたり、末尾を.にしたりすることはできません。
テーブルを作成する
ウェアハウスでは、テーブルは、新しい空のテーブルとして作成することができます。 テーブルを作成し、SELECT ステートメントの結果を使用して値を設定することもできます。 テーブルを作成するための T-SQL コマンドを次に示します。
| T-SQL ステートメント | 説明 |
|---|---|
| テーブルを作成 | すべてのテーブル列およびオプションを定義して空のテーブルを作成します。 |
| SELECT としてテーブルを作成する | SELECT ステートメントの結果を使用して新しいテーブルに値が設定されます。 テーブルの列とデータ型は、SELECT ステートメントの結果に基づきます。 データをインポートするには、このステートメントで外部テーブルから選択できます。 |
この例では、次の 2 つの列を含むテーブルを作成します。
CREATE TABLE MyTable (col1 int, col2 int );
スキーマ名
Warehouse では、カスタム スキーマの作成がサポートされています。 SQL Server での場合と同じように、スキーマは、同様の方法で使用されるオブジェクトをグループ化するのに適しています。 次のコードは、 と呼ばれるwwiを作成します。
- スキーマ名は大文字と小文字が区別されます。
- スキーマ名に
/や\を含めたり、末尾を.にしたりすることはできません。
CREATE SCHEMA wwi;
データ型
Microsoft Fabric では、最も一般的に使用される T-SQL データ型がサポートされています。
- データ型の詳細については、「 Fabric Data Warehouse のデータ型」を参照してください。
- ウェアハウスでテーブルを作成する場合は、CREATE TABLE (Transact-SQL) のデータ型のリファレンスを確認してください。
- ウェアハウスでテーブルを作成するためのガイドについては、テーブルの作成に関するページを参照してください。
照合順序
ファブリック ウェアハウスは、ワークスペースの照合順序設定に基づいて構成されます。既定では、大文字と小文字が区別される (CS) 照合順序 Latin1_General_100_BIN2_UTF8。
新しいウェアハウスを作成するときに、ワークスペースの照合順序が使用されます。 詳細については、「 データ ウェアハウスの照合順序」を参照してください。
サポートされているウェアハウスの照合順序は次のとおりです。
-
Latin1_General_100_BIN2_UTF8(既定値) Latin1_General_100_CI_AS_KS_WS_SC_UTF8
REST API を使用して、既定以外の照合順序を持つウェアハウスを作成できます。 詳細については、「ケースの区別をしない (CI) 照合順序でウェアハウスを作成する方法」を参照してください。
データベースの作成時に照合順序が設定されると、後続のすべてのオブジェクト (テーブル、列など) がこの既定の照合順序を継承します。 ウェアハウスが作成されると、照合順序の設定を変更することはできません。
Statistics
クエリ オプティマイザーでは、クエリ実行のプランの作成時に列レベルの統計が使用されます。 クエリのパフォーマンスを向上させるには、個々の列、特にクエリの結合で使用される列の統計を作成することが重要です。 ウェアハウスでは、統計の自動作成がサポートされます。
統計の更新は自動的には行われません。 大量の行が追加または変更された後に統計を更新します。 たとえば、読み込みの後に統計を更新します。 詳細については、「 Fabric Data Warehouse の統計」を参照してください。
主キー、外部キー、一意キー
Warehouse の場合、 PRIMARY KEY 制約と UNIQUE 制約は、 NONCLUSTERED と NOT ENFORCED の両方が使用されている場合にのみサポートされます。
FOREIGN KEY は、 NOT ENFORCED が使用されている場合にのみサポートされます。
- 構文については、ALTER TABLE をご覧ください。
- 詳細については、「 主キー、外部キー、および一意キー」を参照してください。
#temp テーブル
セッション スコープの一時 (#temp) テーブルは、Fabric Data Warehouse で作成できます。
これらのテーブルは、作成されたセッション内にのみ存在し、そのセッションの間ずっと存在します。 他のユーザーやセッションには表示されず、セッションが終了するか、#temp テーブルが削除されると、システムから自動的に削除されます。 これらのテーブルは、特定の項目レベルのアクセス許可を必要とせずに、すべてのユーザーがアクセスできます。
非分散テーブルと分散テーブルの 2 種類の #temp テーブルは、特定のユース ケースに基づいて作成できます。
非分散 #temp テーブル (mdf-backed) が既定の型です。 Fabric Data Warehouse で非分散 #temp テーブルを作成および使用するための構文はユーザー テーブルに似ていますが、一時テーブル名の前に
#を付ける必要があります。CREATE TABLE #table_name ( Col1 data_type1, Col2 data_type2 );分散一時テーブル (Parquet ベース) は、
DISTRIBUTION=ROUND_ROBINキーワードを使用して作成できます。CREATE TABLE #table_name ( Col1 data_type1, Col2 data_type2 ) WITH (DISTRIBUTION=ROUND_ROBIN);
前のスクリプトでは、 data_type1 と data_type2 は 、Fabric Data Warehouse でサポートされているデータ型のプレースホルダーです。
分散 #temp テーブルは、通常のユーザー テーブルに合わせて配置することをお勧めします。ストレージ、データ型のサポート、T-SQL 操作は無制限です。 データ操作と定義の構文は、Fabric Data Warehouse のユーザー テーブルと同じです。プレフィックス # テーブル名に追加されます。
Fabric Data Warehouse では、一時テーブルは タイム トラベル クエリ ヒントの影響を受けず、常にテーブル内の最新のデータを返します。
ソース データをデータ ウェアハウスに配置する
ウェアハウス テーブルは、別のデータ ソースからデータを読み込むことで設定されます。 読み込みを成功させるには、ソース データ内の列の数とデータ型が、ウェアハウス内のテーブル定義と一致している必要があります。
データが複数のデータ ストアから送信される場合は、データをウェアハウスに移植し、統合テーブルに格納できます。 統合テーブルにデータが含まれると、ウェアハウスの機能を使用して変換操作を実装できます。 データの準備ができたら、それを運用テーブルに挿入できます。
制限事項
ウェアハウスでは、他のデータベースで提供されるテーブル機能の多くがサポートされますが、すべてサポートされるわけではありません。
- グローバル一時テーブルは現在サポートされていません。
次の一覧は、現在サポートされていないテーブル機能の一部を示しています。
テーブルあたり最大 1,024 列
計算列
インデックス付きビュー
パーティション テーブル
シークエンス
スパース列
シノニム
トリガー
一意のインデックス
ユーザー定義データ型
外部テーブル
ウェアハウス オブジェクト メタデータは、オブジェクトとその定義への高速アクセスを提供するために、Fabric Data Warehouse によってキャッシュされます。 オブジェクトが 750,000 を超える非常に大規模なウェアハウス (テーブル、ビュー、ストアド プロシージャ、関数など) の場合、メタデータはシステムによってキャッシュされなくなります。 代わりに、スキーマ操作はメタデータ ストアに直接クエリを実行します。 これにより、システムの安定性が確保され、非常に大規模なデータベースでのキャッシュの不足を防ぐことができます。 ただし、スキーマの更新操作は、メタデータ キャッシュが有効になっている小規模なウェアハウスに比べて時間がかかる場合があります。
重要
Warehouse で Source Control を使用する場合、テーブル制約または列を追加には制限があります。