共用方式為


實施慢速變化維度類型 1

在本教學課程中,您將在 Microsoft Fabric 中使用 Data Factory 和 Dataflow Gen2 建立緩時變維度類型 1 解決方案。

緩時變維度 (SCD) 是用來在維度變更時更新和維護維度數據表中數據的架構。 有不同的方法來處理變更維度,這些方法稱為緩時變維度「類型」。

一些最常見的 SCD 方法為類型 1 和類型 2。 類型 1 會以新值覆寫現有的記錄,只保留目前的狀態。 類型 2 透過新增變更的資料列並將先前的記錄標示為歷史資料,來保留過去的資料。 本教學課程著重於類型 1,當您只需要最新的資訊時,這是理想的做法。

緩時變維度類型 1 是什麼?

隨著維度類型 1 的緩慢變更,您可以更新現有的記錄或新增記錄。 當維度數據表中已有記錄時,您會以新的值覆寫它。 當它是全新的記錄時,您會將其插入為新的數據列。

此方法只會保留您數據的目前狀態。 不會儲存任何歷程記錄資訊。 它非常適合用於補充數據,例如客戶電子郵件地址或電話號碼。

以下是其運作方式:當客戶變更其電子郵件位址時,您會使用新的電子郵件來更新其數據列。 舊電子郵件永遠消失。 好像他們一直都有這個新的電子郵件地址。

您可以在 Power BI 中執行維度數據表的非增加重新整理,以達到相同的結果。 重新整理會以最新的值覆寫現有的數據。

以下是簡單的範例:

item_id name price aisle
83201 Crackers 4.99 6
17879 Soda 7.99 13

如果您將餅乾移至通道 11,使用緩慢變化維度類型 1 在維度資料表中會產生此結果:

item_id name price aisle
83201 Crackers 4.99 11
17879 Soda 7.99 13

您的數據倉儲或 Lake house 事實數據表具有維度數據表的外鍵。 這表示維度數據表中更新的數據列會正確顯示在事實數據表中,以供報告之用。

使用 Power Query 實作

在 Power Query 中,您可以使用合併作業來達成此行為。 看看下列資料流 Gen2:

Power Query 圖表檢視中顯示的數據流螢幕快照。

如圖表檢視中所見,您會執行來源維度記錄與現有維度記錄之間的比較。 然後,您會找到要取代的記錄。 以下是此範例中的 M:

let
    Source = Source,

    #"Added custom" = Table.TransformColumnTypes(
        Table.AddColumn(Source, "Hash", each Binary.ToText( 
            Text.ToBinary( 
                Text.Combine(
                    List.Transform({[FirstName],[LastName],[Region]}, each if _ = null then "" else _),
                "|")),
            BinaryEncoding.Hex)
        ),
        {{"Hash", type text}}
    ),

    #"Marked key columns" = Table.AddKey(#"Added custom", {"Hash"}, false),

    #"Merged queries" = Table.NestedJoin(
        #"Marked key columns",
        {"Hash"},
        ExistingDimRecords,
        {"Hash"},
        "ExistingDimRecords",
        JoinKind.LeftOuter
    ),

    #"Expanded ExistingDimRecords" = Table.ExpandTableColumn(
        #"Merged queries",
        "ExistingDimRecords",
        {"Count"},
        {"Count"}
    ),

    #"Filtered rows" = Table.SelectRows(#"Expanded ExistingDimRecords", each ([Count] = null)),

    #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"Count"})
in
    #"Removed columns"

優點和限制

緩時變維度類型 1 可讓目前的狀態報告和分析變得容易,但在執行歷史分析時有限制。

SCD 類型 1 可確保數據表中沒有重複的記錄,而且數據會顯示最新的目前維度,這對即時儀錶板和預測模型很有用,其中只有目前狀態才重要。

不過,由於表格中只儲存最新資訊,因此使用者無法比較一段時間內維度的變化。 例如,在貨品仍在6號過道時,數據分析師在沒有其他資訊的情況下,會難以比較餅乾的收入,與其後遷移到11號過道時的收入。

如果您需要保留歷程記錄數據,請考慮改用緩時變更維度類型 2。 類型 2 會在保留舊數據時新增變更的數據列。 深入了解 緩時變維度類型 2