共用方式為


如何使用Power Query實作緩時變維度類型1

緩時變維度,通常稱為 SCD,是隨著維度變更而更新和維護儲存在維度數據表中的數據架構。 有一些不同的方法來處理變更維度,這些技術通常稱為緩時變維度「類型」。

緩時變維度類型 1

如果維度數據表中的記錄變更,則使用緩時變維度類型 1,就會更新或覆寫現有的記錄。 否則,新記錄會插入維度數據表。 這表示維度數據表中的記錄一律會反映目前狀態,而且不會維護任何歷程記錄數據。 此設計方法適用于儲存補充值的資料行,例如客戶的電子郵件地址或電話號碼。 當客戶的電子郵件地址或電話號碼變更時,維度數據表會以新的值來更新客戶數據列。 就好像客戶總是有此連絡資訊一樣。 Power BI 模型維度類型數據表的非遞增重新整理,可達成類型 1 緩時變維度的結果。 它會重新整理資料表資料,以確保載入最新的值。

例如:

item_id NAME price 過道
83201 餅乾 4.99 6
17879 Soda 7.99 13

如果破解器移至過道 11,使用緩時變維度類型 1 來擷取維度數據表中的這項變更會產生下列結果:

item_id NAME price 過道
83201 餅乾 4.99 11
17879 Soda 7.99 13

假設數據倉儲或 Lake house 事實數據表具有維度數據表的外鍵。 因此,維度數據表中更新的數據列會正確反映在事實數據表中,以供報告之用。

緩時變維度類型 1 可確保數據表中沒有重複的記錄,而且數據會反映最新的維度。 缺乏重複特別適用於即時儀錶板和預測模型化,其中只有目前的狀態是感興趣的。 由於只有最新的資訊會儲存在數據表中,因此使用者無法比較一段時間維度中的變更。 例如,數據分析師在移轉至過道 11 之後,在沒有其他資訊的情況下,無法識別破解工具的收入提升。

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

在 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 的目標。

緩時變維度類型 2

隨著維度類型 2 的緩慢變更,當維度變更並適當地表示這個新數據列時,會藉由加入新的數據列來維護歷程記錄,同時據以表示新記錄。 使用這項技術來實作緩時變維度類型 1 不僅會保留歷史數據,也會提供數據變更時的相關信息。 維護歷程記錄數據可讓數據分析師和數據科學家探索作業變更、執行 A/B 測試,並賦予明智的決策能力。

Fabric Data Factory 中的數據流 Gen2 可讓您以可視化方式輕鬆實作緩時變維度類型 1 模式。 您也可以達成緩時變維度類型 2 模式,如緩時變維度類型 2 中所述