Share via


設定累加式重新整理和實時數據

本文說明如何設定 語意模型的累加式重新整理和實時數據。 若要瞭解如何設定數據流的累加式重新整理,請參閱數據流的 進階版 功能 - 累加式重新整理

設定累加式重新整理包括建立 RangeStart 和 RangeEnd 參數、套用篩選,以及定義累加式重新整理原則。 發佈至 Power BI 服務 之後,您將對模型執行初始重新整理作業。 初始重新整理作業,後續重新整理作業會套用您定義的累加式重新整理原則。 完成這些步驟之前,請確定您完全了解累加式重新整理和語意模型的實時數據中所述的功能。

建立參數

在這項工作中,您將使用 Power Query 編輯器 來建立具有預設值的 RangeStart 和 RangeEnd 參數。 只有在篩選要載入 Power BI Desktop 模型的數據時,才會套用預設值。 您輸入的值應該只包含來自數據來源的少量最新數據。 發佈至服務時,累加式重新整理原則會覆寫這些時間範圍值。 也就是說,原則會建立一個接一個的傳入數據視窗。

  1. 在 Power BI Desktop 中,選取 [首頁] 功能區上的 [轉換數據] 以開啟 Power Query 編輯器。

  2. 選取 [ 管理參數 ] 下拉式列表,然後選擇 [ 新增參數]。

  3. 在 [ 名稱] 欄位中,輸入 RangeStart (區分大小寫)。 在 [ 類型] 欄位中,從下拉式清單中選取 [日期/時間 ]。 在 [ 目前值] 欄位中,輸入開始日期和時間值。

    Define the Range Start parameter in the Manage Parameters dialog.

  4. 選取 [ 新增 ] 以建立名為 RangeEnd 的第二個參數。 在 [ 類型 ] 欄位中,選取 [日期/時間],然後在 [ 目前值 ] 欄位中輸入結束日期和時間值。 選取 [確定]。

    Define the Range End parameter in the Manage Parameters dialog.

現在您已定義 RangeStart 和 RangeEnd 參數,接下來會根據這些參數篩選要載入模型的數據。

篩選資料

注意

繼續這項工作之前,請確認源數據表具有日期/時間數據類型的日期數據行。 如果它沒有 Date/Time 數據行,但它具有整數代理索引鍵的日期數據行,yyyymmdd請遵循本文稍後將 DateTime 轉換成整數中的步驟,以建立函式,以轉換參數中的日期/時間值,以符合源數據表的整數代理索引鍵。

您現在會根據 RangeStart 和 RangeEnd 參數中的條件 套用篩選。

  1. 在 Power Query 編輯器 中,選取您要篩選的日期數據行,然後選擇下拉式箭號 >[日期篩選>自定義篩選]。

  2. 在 [篩選數據列] 中,若要指定第一個條件,請選取是 after 或 is after 或等於然後選擇 [參數],然後選擇 [RangeStart]。

    若要指定第二個條件,如果您選取的是在第一個條件中之後,則選擇是之前或等於,或者您選取的是之後或等於第一個條件,則針對第二個條件選擇之前,然後選擇 [參數],然後選擇 [RangeEnd]。

    Filter rows dialog showing Range Start and Range End conditions.

    重要事項: 確認查詢在 RangeStart 或 RangeEnd 上都等於 (=),但兩者皆不相同。 如果兩個參數上都存在等於 (=) 的 ,數據列就可能滿足兩個數據分割的條件,這可能會導致模型中的數據重複。 例如, = Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) 如果有等於 RangeStart 和 RangeEnd 的 OrderDate,可能會導致重複的數據。

    選取 [ 確定 ] 以關閉。

  3. 在 Power Query 編輯器 的 [首頁] 功能區上,選取 [關閉及套用]。 Power Query 會根據 RangeStart 和 RangeEnd 參數所定義的篩選,以及您定義的任何其他篩選來載入數據。

    Power Query 只會載入 RangeStart 和 RangeEnd 參數之間指定的數據。 視該期間的數據量而定,數據表應該會快速載入。 如果看起來很慢且需要大量程式,則查詢可能 不會折疊

定義原則

定義 RangeStart 和 RangeEnd 參數,並根據這些參數篩選數據之後,您將定義累加式重新整理原則。 只有在模型發佈至服務之後,才會套用此原則,並執行手動或排程的重新整理作業。

  1. 在 [數據] 檢視中,以滑鼠右鍵按兩下 [資料] 窗格中的數據表,然後選取 [累加式重新整理]。

    Data view showing Table context menu with Incremental refresh selected.

  2. [累加式重新整理] 和 [實時數據>選取數據表] 中,確認或選取數據表。 [選取數據表] 清單框的預設值是您在 [數據] 檢視中選取的數據表。

  3. 指定必要的設定:

    在 [設定匯入和重新整理範圍] 中,>累加式重新整理此數據表會將滑桿移至 [開啟]。 如果停用滑桿,表示數據表的Power Query運算式不包含以 RangeStart 和 RangeEnd 參數為基礎的篩選。

    [封存數據開始] 中,指定您想要包含在模型中的歷史 存放區 期間。 除非套用其他篩選,否則此期間內具有日期的所有數據列都會載入至服務中的模型。

    [以累加方式重新整理數據開始] 中,指定重新整理期間。 每次手動或排程的重新整理作業由 Power BI 服務 執行時,都會在模型中重新整理具有日期的所有數據列。

  4. 指定選擇性設定:

    [選擇選擇性設定] 中,選取 [使用 DirectQuery 實時取得最新數據 進階版],以包含上次重新整理期間之後數據源發生的最新數據變更。 此設定會導致累加式重新整理原則將 DirectQuery 分割區新增至數據表。

    選取 [僅重新整理完成天數 ] 僅重新整理整整天。 如果重新整理作業偵測到一天未完成,則整整一天的數據列不會重新整理。 當您選取 [使用 DirectQuery 即時取得最新數據] 時,會自動啟用此選項(僅限 進階版)。

    選取 [ 偵測資料變更 ] 以指定用來識別及重新整理資料變更日期/時間數據行的日期/時間數據行。 日期/時間數據行必須存在於數據源上,通常是用於稽核目的。 此數據行 不應該是用來使用 RangeStart 和 RangeEnd 參數分割數據的相同 數據行。 此數據行的最大值會針對累加範圍中的每個期間進行評估。 如果自上次重新整理之後尚未變更,就不會重新整理目前的期間。 針對發行至 進階版 容量的模型,您也可以指定自定義查詢。 若要深入瞭解,請參閱 進階累加式重新整理 - 用於偵測數據變更的自定義查詢。

    根據您的設定,您的原則看起來應該像這樣:

    Incremental refresh and real-time data policy dialog showing incremental refresh range.

  5. 檢閱您的設定,然後選取 [ 套用 ] 以完成重新整理原則。 此步驟不會載入數據。

儲存併發佈至服務

現在您的 RangeStart 和 RangeEnd 參數、篩選和重新整理原則設定已完成,請儲存您的模型,然後發布至服務。 如果您的模型將會變大,請務必先啟用 大型模型儲存格式,再 叫用服務中的第一次重新整理。

重新整理模型

在服務中,重新整理模型。 第一次重新整理會在重新整理期間載入新的和更新的數據,以及整個存放區期間的歷史數據。 視數據量而定,此重新整理可能需要相當長的時間。 後續的重新整理,無論是手動還是排程,通常都快得多,因為累加式重新整理原則會套用,而且只會重新整理重新整理原則設定中指定的期間的數據。

將 DateTime 轉換為整數

只有當數據表使用整數代理索引鍵,而不是用於 RangeStart 和 RangeEnd 篩選定義的日期數據行中的日期/時間值時,才需要此工作。

RangeStart 和 RangeEnd 參數的數據類型必須是日期/時間數據類型,不論日期數據行的數據類型為何。 不過,對於許多資料來源而言,數據表沒有日期/時間資料類型的數據行,而是具有整數代理索引鍵的日期數據行,格式為 yyyymmdd。 您通常無法將這些整數代理索引鍵轉換成日期/時間數據類型,因為結果會是非折疊查詢表達式,但是您可以建立函式,以轉換參數中的日期/時間值,以符合數據源數據表的整數代理索引鍵,而不會失去折疊性。 接著會在篩選步驟中呼叫函式。 如果數據源數據表只包含 Surrogate 索引鍵做為整數數據類型,則需要此轉換步驟。

  1. [首頁] 功能區 Power Query 編輯器 上,選取 [新增來源] 下拉式清單,然後選擇 [空白查詢]。

  2. [查詢] 設定 中,輸入名稱,例如 DateKey,然後在公式編輯器中輸入下列公式:

    = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)

    Power BI function editor showing the integer surrogate DateKey function.

  3. 若要測試公式,請在 Enter Parameter輸入日期/時間值,然後選取 [用]。 如果公式正確,則會傳回日期的整數值。 驗證之後,請刪除這個新的 叫用函式 查詢。

  4. [查詢] 中,選取數據表,然後編輯查詢公式,以使用 RangeStart 和 RangeEnd 參數呼叫函式。

    = Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))

    Power BI table showing DateKey filter.