Fabric Data Warehouse 中的表格

適用於:✅ Microsoft Fabric 中的倉庫

本文詳細說明了在 Microsoft Fabric 中設計資料表的關鍵概念。

在資料表中,會以邏輯方式將資料整理成資料列與資料行格式。 每個資料列都代表唯一的記錄,而每個資料行則代表記錄中的一個欄位。

判斷資料表類別

星型結構描述會將資料整理成事實資料表維度資料表。 某些資料表用於在移至事實資料表或維度資料表之前整合或暫存資料。 當您設計資料表時,決定資料表資料是屬於事實資料表、維度資料表還是整合資料表。 此決策會通知適當的資料表結構。

  • 事實資料表包含通常在交易系統中產生的量化資料,然後載入到資料倉儲中。 例如,零售業務每天會產生銷售交易,然後將資料載入到資料倉儲事實資料表進行分析。

  • 維度資料表包含可能會變更但通常不常變更的屬性資料。 例如,客戶的名稱和地址會儲存在維度資料表中,而且只有在客戶的設定檔變更時才會更新。 若要降低大型事實資料表的大小,則不需將客戶的名稱和地址放在事實資料表的每個資料列中。 相反,事實資料表和維度資料表可以共用客戶識別碼。 查詢可以聯結這兩個資料表格,來關聯客戶的資料檔案和交易。

  • 整合資料表提供了整合或暫存資料的位置。 例如,您可以將資料載入至暫存表格、對暫存中的資料執行轉換,然後將資料插入到生產資料表。

資料表會將資料儲存在 OneLake 中作為倉儲的一部分。 資料表和資料無論工作階段是否開啟,都會被持續保存。

倉庫中的桌子

若要顯示資料表的組織,您可以使用 factdimint 作為資料表名稱的前置詞。 下表顯示 WideWorldImportersDW 範例資料倉儲的一些結構描述和資料表名稱。

WideWorldImportersDW 來源資料表名稱 資料表類型 資料倉儲資料表名稱
維度 wwi.DimCity
訂單 事實 wwi.FactOrder
  • 資料表名稱不能包含 /\ 或者以 . 結尾。

建立表格

針對倉儲,您可以建立資料表作為新的空白資料表。 您也可以建立資料表,並使用 select 陳述式的結果填入該資料表。 以下是用來建立資料表的 T-SQL 命令。

T-SQL 陳述式 描述
建立表格 透過定義所有資料表資料行和選項來建立空白資料表。
建立資料表作為選取 將 select 陳述式的結果填入新資料表。 資料表的欄位和資料類型是基於 SELECT 語句的結果。 若要匯入資料,可以使用該陳述式從外部資料表中選擇資料。

此範例會建立具有兩個資料行的資料表:

CREATE TABLE MyTable (col1 int, col2 int );

綱要名稱

倉儲支援建立自訂結構描述。 就像 SQL Server 一樣,結構是將類似用途的物件分組的好方法。 下列程式碼會建立一個稱為的

  • Schema 名稱區分大小寫。
  • 結構描述名稱不能包含 /\ 或者以 . 結尾。
CREATE SCHEMA wwi;

資料類型

Microsoft Fabric 支援最常用的 T-SQL 資料型態。

  • 欲了解更多資料型態,請參閱Fabric Data Warehouse<>中的資料型別。
  • 當你在倉庫中建立資料表時,請檢視 CREATE TABLE (Transact-SQL) 中的資料類型參考。
  • 如需在 Warehouse 中建立資料表的指南,請參閱建立資料表

定序

Fabric 資料倉儲是根據工作區的排序規則進行配置,預設為大小寫區分(CS)排序規則Latin1_General_100_BIN2_UTF8。 建立 新倉庫時,將使用工作區的排序規則。 更多資訊請參見 Data Warehouse collation

支援的倉庫定序包括:

  • Latin1_General_100_BIN2_UTF8 (預設)
  • Latin1_General_100_CI_AS_KS_WS_SC_UTF8

您可以使用 REST API 建立具有非預設定序的倉儲。 如需詳細資訊,請參閱 如何:使用不區分大小寫 (CI) 定序建立倉儲

一旦在資料庫建立期間設定了排序規則,所有後續物件(表、列等)都將繼承此預設排序規則。 建立倉庫後,無法變更對照設定。

統計資料

查詢最佳化工具會在建立執行查詢的計畫時,使用資料行層級統計資料。 若要改善查詢效能,取得個別資料行的統計資料非常重要,尤其是查詢聯結中使用的資料行。 倉儲支援自動建立統計資料。

統計更新不會自動進行。 新增或變更大量資料列之後,更新統計資料。 例如,在載入之後更新統計資料。 更多資訊請參閱Fabric Data Warehouse中的Statistics。

主要索引鍵、外部索引鍵和唯一索引鍵

對於倉庫,僅當同時使用 PRIMARY KEYUNIQUE 時,才支援 NONCLUSTEREDNOT ENFORCED 限制。

FOREIGN KEY 僅當使用 NOT ENFORCED 時支援。

#暫存表

Fabric Data Warehouse 可以建立會話範圍的暫存(#temp)表格。

這些表格僅存在於建立它們的階段作業中,並在該階段作業期間持續存在。 其他使用者或階段作業看不到它們,一旦階段作業結束或 #temp 表被捨棄,它們就會自動從系統中捨棄。 所有使用者都可以存取這些表格,而不需要特定的項目層級權限。

根據特定使用情境可以建立兩種類型的 #temp 資料表:非分散式與分散式。

  • 非分散式 #temp 資料表 (mdf 支援) 是預設類型。 在 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);
    

在先前的腳本中, 是 Fabric Data Warehouse 中支援的 資料型態的佔位符。

建議使用分散式 #temp 表,因為它們與一般使用者表一致;它們具有無限的儲存、資料類型支援和 T-SQL 作業。

關於Fabric Data Warehouse臨時表格的其他說明:

  • 資料操作與定義的語法與 Fabric Data Warehouse 中的使用者資料表相同,僅在資料表名稱前加上前綴 #
  • 暫存資料表不受 時間旅行 查詢提示的影響,且總是回傳表格中最新的資料。
  • 你可以用 來修改分散式暫存表 ALTER TABLE,但不能修改 MDF 支援的暫存表。

將來源資料與資料倉儲對齊

倉儲資料表是透過從另一個資料來源載入資料來填入的。 若要成功載入,來源資料中資料行的數目和資料類型必須與倉儲中的表格定義一致。

如果資料來自多個資料存放區,您可以將資料移植到倉儲中,並將其儲存在整合表格中。 一旦資料進入整合表,您就可以利用倉庫的強大功能來實現轉換作業。 備妥資料之後,您可以將它插入生產資料表中。

限制

倉儲支援其他資料庫提供的許多 (但並非所有) 資料表功能。

  • 目前不支援全域暫存資料表。

下列清單顯示目前不支援的一些資料表功能。

  • 每個資料表最多 1,024 個資料行

  • 計算資料行

  • 具索引的檢視

  • 分區資料表

  • 序列

  • 稀疏欄位

  • 同義字

  • 觸發器

  • 唯一索引

  • 使用者定義型別

  • 外部數據表

  • 倉庫物件的元資料由 Fabric Data Warehouse 快取,以提供對物件及其定義的快速存取。 對於具有超過 750,000 個物件 (例如資料表、檢視、預存程序和函數) 的超大型倉儲,系統不再快取中繼資料。 相反地,Schema 操作會直接查詢中繼資料存放區。 這確保了系統的穩定性,並防止了超大型資料庫中的快取不足。 不過,相較於啟用中繼資料快取的小型倉儲,結構描述重新整理作業可能需要更長的時間。

重要

使用原始檔控制搭配倉儲時,新增資料表條件約束或資料行有一些限制。