設定累加式重新整理和即時資料
本文說明如何設定語意模型的累加式重新整理和即時資料。 若要了解如何設定資料流程的累加式重新整理,請參閱資料流程的進階版功能 - 累加式重新整理。
設定累加式重新整理包括建立 RangeStart 和 RangeEnd 參數、套用篩選條件,以及定義累加式重新整理原則。 發佈至 Power BI 服務之後,您將對模型執行初始重新整理作業。 初始重新整理作業和後續重新整理作業會套用您所定義的累加式重新整理原則。 完成這些步驟之前,請確定您完全了解語意模型的累加式重新整理和即時資料中所述的功能。
建立參數
在這項工作中,您將使用 Power Query 編輯器來建立具有預設值的 RangeStart 和 RangeEnd 參數。 只有在篩選要載入 Power BI Desktop 模型的資料時,才會套用預設值。 您輸入的值應該只包含資料來源的少量最新資料。 發佈至服務時,增量刷新策略將覆蓋這些時間範圍值。 也就是說,原則會一一建立傳入資料的時段。
在 Power BI Desktop 中,在 [首頁] 功能區中選取 [轉換資料],以開啟 Power Query 編輯器。
選取 [管理參數] 下拉式清單,然後選擇 [新增參數]。
在 [名稱] 欄位中,輸入 [RangeStart] (區分大小寫)。 在 [類型] 欄位中,從下拉式清單中選取 [日期/時間]。 在 [目前的值] 欄位中,輸入開始日期和時間值。
選取 [新增] 以建立名為 [RangeEnd] 的第二個參數。 在 [類型] 欄位中,選取 [日期/時間],然後在 [目前的值] 欄位中,輸入結束日期和時間值。 選取 [確定]。
現在您已定義 RangeStart 和 RangeEnd 參數,接下來會根據這些參數,篩選要載入模型的資料。
篩選資料
注意
繼續這項工作之前,請確認來源表格具有「日期/時間」資料類型的日期資料行。 如果沒有「日期/時間」資料行,但具有整數替代索引鍵的日期資料行 (格式為 yyyymmdd
),請遵循本文稍後的將 DateTime 轉換成整數中的步驟,建立函式來轉換參數中的日期/時間值,藉此符合來源表格的整數替代索引鍵。
您現在會根據 RangeStart 和 RangeEnd 參數中的條件套用篩選條件。
在 Power Query 編輯器中,選取您要篩選的日期資料行,然後選擇下拉式箭頭>[日期篩選]>[自訂篩選]。
在 [篩選資料列] 中,若要指定第一個條件,請選取 [之後] 或是 [之後或等於],然後選擇 [參數] 再選擇 [RangeStart]。
若要指定第二個條件,當您在第一個條件中選取 [之後],請選擇 [之後或等於],如果您在第一個條件中選取 [之後或等於],請為第二個條件選擇 [之前], 然後選擇 [參數] 再選擇 [RangeEnd]。
重要:確認查詢在 RangeStart 或 RangeEnd 上具有等號 (=),而非兩者都有。 如果這兩個參數上都存在等號 (=),資料列可能會滿足兩個分割的條件,而導致模型中的資料重複。 例如,如果 OrderDate 等於 RangeStart 和 RangeEnd,
= Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd)
可能會導致重複的資料。選取 [確定] 以關閉。
從查詢 Power Query 編輯器的 [首頁] 功能區,選取 [關閉並套用]。 Power Query 會根據 RangeStart 和 RangeEnd 參數所定義的篩選,以及您定義的任何其他篩選條件來載入資料。
Power Query 只會載入 RangeStart 和 RangeEnd 參數之間指定的資料。 視該期間的資料量而定,表格應該會快速載入。 如果速度緩慢且需要大量流程,很可能是查詢並未折疊。
定義原則
定義 RangeStart 和 RangeEnd 參數,並根據這些參數篩選資料之後,您將定義累加式重新整理原則。 只有在模型發佈至服務之後,才會套用此原則,並執行手動或排程的重新整理作業。
在 [數據表] 檢視中,以滑鼠右鍵點擊 [數據] 窗格中的表格,然後選取 [累加式重新整理]。
在 [累加式重新整理和即時資料]>[選取資料表] 中,確認或選取資料表。 [選取數據表] 清單框的預設值是您在 [數據表] 檢視中選取的數據表。
請指定必要設定:
在 [設定匯入和重新整理範圍]>[累加式重新整理此資料表] 中,將滑桿移至 [開啟]。 如果停用滑桿,表示表格的 Power Query 運算式不包含以 RangeStart 和 RangeEnd 參數為基礎的篩選。
在 [封存資料啟動中],指定您要包含在模型中的歷程記錄儲存期間。 除非套用其他篩選條件,否則此期間內具有日期的所有資料列都會載入服務中的模型。
在 [累加式重新整理資料啟動中],指定 [重新整理] 期間。 每次 Power BI 服務執行手動或排程的重新整理作業時,都會在模型中重新整理具有此期間日期的所有資料列。
指定選擇性設定:
在 [選擇選擇性設定] 中,選取 [使用 DirectQuery 即時取得最新資料 (僅適用於進階版)],以包含上次重新整理期間之後,資料來源發生的最新資料變更。 此設定會導致累加式重新整理原則將 DirectQuery 磁碟分割新增至表格。
選取 [只重新整理完整天數],以便只重新整理完整的幾天。 如果重新整理作業偵測到一天未完成,則整日的資料列不會重新整理。 當您選取 [使用 DirectQuery 即時取得最新資料 (僅適用於進階版)] 時,會自動啟用此選項。
選取 [偵測資料變更],以指定日期/時間資料行,用來指定和重新整理僅限日期已變更的天數。 日期/時間資料行必須存在於資料來源 (通常是用於稽核目的)。 此資料行不應該與使用 RangeStart 和 RangeEnd 參數來分割資料的資料行相同。 會評估此資料行在累加式範圍之每個週期的最大值。 如果自上次重新整理之後尚未變更,就不會重新整理目前的期間。 針對發佈至進階版容量的模型,您也可以指定自訂查詢。 若要深入了解,請參閱進階累加式重新整理 - 偵測資料變更的自訂查詢。
視您的設定而定,您的原則看起來應該像這樣:
檢閱您的設定,然後選取 [套用],以完成重新整理原則。 此步驟不會載入資料。
儲存並發佈至服務
現在您的 RangeStart 和 RangeEnd 參數、篩選條件和重新整理原則設定已完成,請儲存您的模型,然後發佈至服務。 如果您的模型變大,請務必先啟用 大型模型儲存格式,再 叫用服務中的第一次重新整理。
重新整理模型
在服務中,重新整理模型。 第一次重新整理會在重新整理期間載入新的和更新的數據,同時也包含整個資料儲存期間的歷史數據。 視資料量而定,此重新整理可能需要相當長的時間。 後續的重新整理 (無論是手動還是排程) 通常都快得多,因為累加式重新整理原則會套用,而且只會重新整理在重新整理原則設定中指定期間的資料。
將 DateTime 轉換成整數
只有當表格使用整數替代索引鍵,而不是用於 RangeStart 和 RangeEnd 篩選定義日期資料行中的「日期/時間」值時,才需要此工作。
RangeStart 和 RangeEnd 參數的資料類型必須是日期/時間資料類型,不論日期資料行的資料類型為何。 不過,對於許多資料來源而言,表格沒有日期/時間資料類型的資料行,而是具有整數替代索引鍵的日期資料行 (格式為 yyyymmdd
)。 您通常無法將這些整數代理索引鍵轉換成「日期/時間」資料類型,因為結果會是非折疊查詢表達式,但是您可以建立函式,以轉換參數中的日期/時間值,藉此符合資料來源表格的整數代理索引鍵,同時保留折疊性。 接著會在篩選步驟中呼叫函式。 如果資料來源表格只包含代理索引鍵做為整數資料類型,則需要此轉換步驟。
在 Power Query 編輯器中的 [首頁] 功能區上,選取 [新增來源] 下拉式清單,然後選擇 [空白查詢]。
在 [查詢設定] 中,輸入名稱 (例如 DateKey),然後在公式編輯器中輸入下列公式:
= (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)
若要測試公式,請在 [輸入參數] 中輸入日期/時間值,然後選取 [叫用]。 如果公式正確,則會傳回日期的整數值。 驗證之後,請刪除這個新的 [已叫用函式] 查詢。
在 [查詢]中,選取表格,然後編輯查詢公式,以使用 RangeStart 和 RangeEnd 參數呼叫函式。
= Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))