共用方式為


在 Power BI 中使用 DirectQuery 連線到 SAP HANA 數據源

您可以使用 DirectQuery 直接連線到 SAP HANA 數據源,對於超過可用資源以支援匯入模型的大型數據集而言,這通常是必要的。 在 DirectQuery 模式中連線到 SAP HANA 的方法有兩種,每個方法都有不同的功能:

  • 將 SAP HANA 視為多維度來源(預設值): 在此情況下,當 Power BI 連接到 SAP Business Warehouse 或 Analysis Services 等其他多維度來源時,行為會類似。 當您以多維度來源身分連線到 SAP HANA 時,會選取單一分析或計算檢視,並在欄位清單中提供該檢視的所有量值、階層和屬性。 您無法在語意模型中新增計算資料行或其他資料自訂化功能。 建立視覺效果時,會直接從 SAP HANA 擷取匯總數據。 將 SAP HANA 視為多維度來源是 SAP HANA 上新 DirectQuery 報表的預設。

  • 將 SAP HANA 視為關係型來源: 在此情況下,Power BI 會將 SAP HANA 視為關係型數據源。 這種方法提供更大的彈性。 此外,您可以新增計算欄位並包含來自其他來源的數據,但必須小心確保量值如預期般彙總。 避免使用非相加性方法。 此外,請確保使用具有少量欄位和連結的簡單檢視,以避免效能問題。 請考慮在語意模型中重新建立量值,但請記住,複雜的量值可能不會折疊。 使用 SAP HANA 作為關係型來源時,無法使用 SAP HANA 階層。

聯機方法是由全域工具選項所決定,其設定方式是選取 [檔案][選項和設定],然後 [選項]DirectQuery,然後選取 [將 SAP HANA 視為關係型來源] 選項,如下圖所示。

[選項] 對話框的螢幕快照,其中顯示 DirectQuery 選項。

將 SAP HANA 視為關係型來源的選項會控制任何 使用 DirectQuery over SAP HANA 之新 報表的連接方法。 它不會影響目前報表中任何現有的 SAP HANA 連線,也不會對已開啟的任何其他報表中的連線產生任何影響。 因此,如果選項目前未核取,則在使用 Get Data將新的連線新增至 SAP HANA 時,該連線會將 SAP HANA 視為多維度資料來源。 不過,如果開啟另一個也會連線到 SAP HANA 的報表,則該報表會繼續根據在建立時設定 的選項繼續運作。 這個事實表示,任何連線到 SAP HANA 做為關係來源的報告都會繼續將 SAP HANA 視為關係型來源,即使選項現在未核取也一樣。

這兩個 SAP HANA 連接方法構成不同的行為,而且無法將現有的報表從一個連接方法切換到另一個連接方法。

將 SAP HANA 視為多維度來源 (預設值)

SAP HANA 的所有新連線預設都會使用此連線方法,將 SAP HANA 視為多維度來源。 當以多維度來源身分連線到 SAP HANA 時,適用下列考慮:

  • [取得數據導覽器]中,可以選取單一 SAP HANA 檢視。 您無法選取個別量值或屬性。 連線時未定義任何查詢,這與匯入數據不同,或在將 SAP HANA 視為關係型來源時使用 DirectQuery 時。 此考慮也表示您無法在選取此連線方法時直接使用 SAP HANA SQL 查詢。

  • 選取檢視的所有量值、階層和屬性都會顯示在欄位清單中。

  • 在視覺化中使用量值時,會查詢 SAP HANA,以提取視覺化所需匯總層級的量值。 處理非加總量值時,例如計數器和比率,所有匯總都是由 SAP HANA 執行,Power BI 不會再執行任何匯總。

  • 若要確保一律可以從 SAP HANA 取得正確的匯總值,必須施加某些限制。 例如,您無法新增計算欄,或合併同一報表內來自多個 SAP HANA 檢視的數據。 也無法刪除資料行或變更其數據類型。

將 SAP HANA 視為多維度來源可提供比替代 關係型 方法更少的彈性,但更為直接。 當處理更複雜的 SAP HANA 量值時,這個連接方法可確保正確的匯總值,而且通常會導致更高的效能。

欄位 清單包含 SAP HANA 檢視中的所有量值、屬性和階層。 注意以下在使用這個連接方法時適用的行為:

  • 默認會隱藏至少一個階層中包含的任何屬性。 不過,在欄位清單的上下文選單中選取檢視隱藏,即可根據需要查看它們。 若有需要,可以從相同的操作功能表中顯示這些項目。

  • 在 SAP HANA 中,可以定義屬性以使用另一個屬性作為其標籤。 例如,Product,其值為 123等等,可以使用 ProductName,並將值 BikeShirtGloves等等作為標籤。 在此情況下,欄位清單中會顯示一個名為 Product 的單一字段,其值用作標籤,例如 BikeShirtGloves等,但會依據由索引鍵值 123排序並確定唯一性。 建立了隱藏欄位 Product.Key,以便在需要時存取基礎鍵值。

在連線時,基礎 SAP HANA 檢視中定義的任何變數都會顯示,而且可以輸入必要的值。 這些值稍後可以從功能區中選取 [轉換數據],然後從下拉功能表中選擇 [編輯參數] 來變更。

允許的模型化作業比使用 DirectQuery 時的一般案例更嚴格,因為必須確保一律可以從 SAP HANA 取得正確的匯總數據。 不過,仍然可以進行一些新增和變更,包括定義量值、重新命名和隱藏字段,以及定義顯示格式。 重新整理時會保留所有這類變更,並套用對 SAP HANA 檢視所做的任何非衝突變更。

其他模型限制

除了上述限制之外,在聯機到 SAP HANA 做為多維度來源時,請注意下列模型限制:

  • 不支援匯出數據行: 停用建立匯出數據行的能力。 這個事實也表示依賴計算列的分組和群集無法使用。
  • 量值的其他限制: 在量值中使用的 DAX 運算式有其他限制,以反映 SAP HANA 所提供的支持層級。 例如,您無法在數據表上使用聚合函數。
  • 不支援定義關聯性: 在報表內只能查詢單一檢視,因此不支援定義關聯性。
  • 沒有數據表檢視:數據表檢視 通常會顯示表格中的詳細數據。 鑒於多維度來源的性質,當使用 SAP HANA 作為多維度來源時,無法使用此檢視。
  • 欄位和度量詳細資訊是不可更動的: 欄位清單中的欄位和度量是由基礎來源決定,無法修改。 例如,您無法刪除資料行,也無法變更其數據類型。 不過,它可以重新命名。

其他視覺效果限制

連接至 SAP HANA 作為多維度來源時,視覺效果會有限制:

  • 沒有數據欄的聚合: 無法在視覺化圖表上更改資料欄的匯總狀態,並且一律為 勿摘要

將 SAP HANA 視為關係型來源

若要將 SAP HANA 連線為關係型來源,您必須選取 [檔案]>[選項和設定],然後 [選項]>DirectQuery],然後選取選項 將 SAP HANA 視為關係型來源

使用 SAP HANA 作為關係型來源時,有一些額外的彈性可供使用。 例如,您可以建立匯出數據行、包含來自多個 SAP HANA 檢視的數據,以及建立結果數據表之間的關聯性。 然而,當連線到作為多維度來源的 SAP HANA 時,其行為會有所不同,特別是在 SAP HANA 檢視中包含非加總量值的情況下,像是相異計數或平均值,而非簡單的總和。 非加法量值可能會產生錯誤的結果。 這些量值也可以降低SAP HANA中查詢計劃優化的效率,並導致查詢效能和逾時不佳。

了解 SAP HANA 作為關係型資料來源

可以從釐清例如 SQL Server 這類關係型來源在 取得數據 或 Power Query 編輯器中定義的查詢執行匯總時的行為開始,這會很有用。 在下列範例中,在 Power Query 編輯器中定義的查詢將傳回每個 ProductID的平均價格。

圖表顯示Power Query 編輯器中定義的查詢,會依產品標識碼傳回平均價格。

如果數據已匯入 Power BI 而不是使用 DirectQuery,則會產生下列情況:

  • 資料會依據在 Power Query 編輯器中建立的查詢所定義的匯總層級進行匯入。 例如,按產品計算的平均價格。 這個事實會產生數據表,其中包含兩個數據欄 ProductIDAveragePrice,這些欄位可以用於視覺化呈現。
  • 在視覺化中,任何後續匯總,如 SumAverageMin等,都是基於該匯入的數據進行的。 例如,當在視覺化中包含 AveragePrice 時,預設將使用 Sum 來進行匯總,並傳回每個 ProductID對應的 AveragePrice 的總和,此範例中的總和為 13.67。 這同樣適用於在視覺化表示中使用的任何替代聚合函數,例如 MinAverage。 例如,AverageAveragePrice 傳回 6.66、4 和 3 的平均值,即 4.56,而不是基礎表格中六筆記錄的 Price 平均值,即 5.17。

如果使用相同關係來源的 DirectQuery 而不是匯入,則會套用相同的語意,結果會完全相同:

  • 假設有相同的查詢,邏輯上完全相同的數據會呈現至報告層,即使實際上不會匯入數據也一樣。

  • 在視覺化表示中,任何後續匯總,例如 SumAverageMin,會在查詢的邏輯數據表上再次執行。 同樣地,包含 AverageAveragePrice 的視覺效果會傳回相同的 4.56。

當連線被視為關係型來源時,請考慮 SAP HANA。 Power BI 可以在 SAP HANA 中使用 分析檢視計算檢視,這兩者都可以包含量值。 然而,目前 SAP HANA 的方法遵循與本節先前所述的相同原則:在 取得數據 或 Power Query 編輯器中定義的查詢決定了可用的數據,然後在視覺效果中的任何後續匯總將基於這些數據進行,這同樣適用於 Import 和 DirectQuery。 不過,鑑於 SAP HANA 的特性,在初始 取得數據 對話框或 Power Query 編輯器 中定義的查詢一律是匯總查詢,通常包含的量值其實際匯總是由 SAP HANA 檢視所決定。

與先前的 SQL Server 範例等價的是,有一個 SAP HANA 檢視,其中包含 IDProductIDDepotID,以及量值 AveragePrice,這些量值在檢視中被定義為價格的平均值 Average of Price

如果在 取得數據 體驗中,所做的選擇是針對 ProductIDAveragePrice 量值,那麼就是在檢視上定義查詢,要求該匯總數據。 在先前的範例中,為了簡單起見,會使用與 SAP HANA SQL 完全語法不符的虛擬 SQL。 然後,視覺效果中定義的任一額外匯總將進一步整合此類查詢的結果。 同樣地,如先前針對 SQL Server 所述,此結果適用於 Import 和 DirectQuery 案例。 在 DirectQuery 情況下,來自 Get Data 或 Power Query 編輯器的查詢會作為子查詢包含在傳送至 SAP HANA 的單一查詢中,因此在進一步彙總之前,實際上並不是所有數據都會被讀取。

在將 DirectQuery 用於 SAP HANA 作為關係型來源時,所有這些考量和行為都需要注意以下重要事項:

  • 每當 SAP HANA 中的量值為非加法性質時,必須注意在視覺效果中執行的任何進一步匯總,例如,不是簡單的 SumMinMax

  • 取得數據 或 Power Query 編輯器中,只應包含必要的數據行來擷取必要的數據,反映結果必須是可傳送至 SAP HANA 之合理查詢的事實。 例如,如果選取了數十個數據行,並認為後續視覺效果上可能需要這些數據行,則即使針對 DirectQuery,簡單視覺效果也表示子選取中使用的匯總查詢包含數十個數據行,這些數據行通常執行不佳且可能會遇到逾時。

在下列範例中,在 [取得數據] 對話框中選取五個數據行(CalendarQuarterColorLastNameProductLineSalesOrderNumber) 連同 orderQuantity量值 ,表示稍後建立包含 Min OrderQuantity 的簡單視覺效果, 會產生下列 SAP HANA SQL 查詢。 陰影部分是子查詢,其中包含來自 Get Data / Power Query 編輯器的查詢。 如果這個子選擇提供高基數結果,則產生的 SAP HANA 效能可能會很差或遇到逾時。 效能影響並不是因為 Power BI 要求子查詢中的所有欄位造成;外部查詢會排除掉大部分的欄位。 相反地,影響是因為子選擇中的量值迫使它在 HANA 伺服器中具體化。

查詢範例的螢幕快照,其中顯示 SAP HANA 的 SQL 查詢。

基於此行為,我們建議在 獲取資料 或 Power Query 編輯器中選取的項目應限制在所需的項目內,以確保仍能生成合理的 SAP HANA 查詢。 如果可能,請考慮在語意模型中重新建立所有必要的措施,並將 SAP HANA 的使用更接近於傳統的關係資料來源。

最佳做法

若要讓這兩種方法連線到 SAP HANA,請遵循使用 DirectQuery 的一般建議,特別是與確保良好查詢效能相關的建議。 如需詳細資訊,請參閱 在 Power BI 中使用 DirectQuery

注意事項和限制

下列清單描述所有在使用 SAP HANA 時未完全支援的功能,或者是在使用 Power BI 時行為不同的功能。

  • 父子階層:Power BI 中看不到父子階層 父子階層。 這是因為 Power BI 會使用 SQL 介面存取 SAP HANA,且無法使用 SQL 完全存取父子階層。
  • 其他階層元數據: 階層的基本結構會顯示在Power BI中,不過某些階層元數據,例如控制不完全階層的行為,沒有任何作用。 同樣地,這是因為 SQL 介面所施加的限制。
  • 使用 SSL 的連線: 您可以使用匯入和多維搭配 TLS 進行連線,但無法連線到設定為使用 TLS 作為關聯式連接方法的 SAP HANA 實例。
  • 支援屬性檢視: Power BI 可以連線到分析和計算檢視,但無法直接連線到屬性檢視。
  • Catalog 物件的支援: Power BI 無法連接至 Catalog 物件。
  • 發佈後變更為變數: 發佈報表之後,您無法直接在 Power BI 服務中變更任何 SAP HANA 變數的值。

已知問題

下列清單說明使用Power BI 連線到 SAP HANA (DirectQuery) 時的所有已知問題。

  • 查詢計數器和其他量值時的 SAP HANA 問題: 如果連接到分析檢視,並且在同一視覺化中包含計數器量值和一些其他比例量值,SAP HANA 會返回不正確的數據。 SAP 附註2128928(查詢計算列和計數器時的非預期結果)涵蓋此問題。 在此情況下,比率量值不正確。

  • 多個來自單一 SAP HANA 資料欄的 Power BI 欄位: 針對某些計算視圖,其中 SAP HANA 資料欄用於多個層級時,SAP HANA 會將資料欄以兩個不同屬性形式提供。 此方法會導致在Power BI中建立兩個數據行。 不過,這些欄位預設是隱藏的,而且所有涉及階層的查詢或直接涉及欄位的查詢都會正確運作。

如需 DirectQuery 的詳細資訊,請參閱下列資源: