\nSAP HANA分析檢視查詢產生意外結果\n


您沒有提供您試圖實現目標的完整細節。請參考SAP OSS 筆記 1993033 分析檢視查詢結果錯誤

啟用分析檢視時,會生成列檢視。但是,某些構件無法在此列檢視中計算。在這種情況下,會在其頂部生成一個額外的計算檢視。如果在分析檢視中定義了以下元素,則必須執行計算檢視的生成

  • 輸入引數
  • 計算屬性
  • 單位或貨幣轉換

如果在分析檢視中定義了至少一個這些元素,則啟用會建立一個OLAP檢視和一個計算檢視。執行時的查詢始終指向計算檢視,計算檢視本身從OLAP檢視檢索資料。計算檢視獲取已聚合的資料,並且對計算度量的查詢可能會返回意外結果,具體取決於其公式和複雜性。

關於計算度量的位置,有三種可能性

  • OLAP,聚合前計算(這必須在分析檢視中顯式標記)
  • OLAP,聚合後計算(預設行為)
  • 計算檢視

如果公式使用計算屬性、輸入引數或需要計算檢視的其他計算度量,則必須在計算檢視中計算計算度量。

現在,查詢的結果取決於公式及其計算位置。例如,如果公式將度量的值乘以某個因子,則公式可能對聚合透明:CM1 = M1 * 1000

無論公式是在(求和)聚合之前還是之後計算,結果始終相同。

但是,這並不適用於新增常數值的公式,例如 CM2 = M1 + 1

說明(例如,M1 有 10 個值,每個值等於 1000)

    聚合前計算

    每個 CM2 的計算結果為 1001,求和聚合結果為 10010

    聚合後計算

    結果為 10*1000 + 1 = 10001

如果分析檢視定義了計算度量,有些在OLAP檢視中計算,有些在計算檢視中計算,則根據公式,它們的混合可能會很危險。

分析檢視中與聚合型別不符合的計算度量可能會產生意外結果——這取決於此檢視的特定查詢。如果使用了以下至少一個元素,則請求此類計算度量的查詢可能很危險

    group by 定義中的計算檢視屬性

    請求單位/貨幣轉換度量

    請求 distinct 計數度量

    對分析檢視進行堆疊式 SQL 查詢,例如:

SELECT SUM(CALC_MEASURE) FROM (

SELECT SUM(CALC_MEASURE),A

FROM AVIEW GROUP BY A)

      

解決方案 −

如果對分析檢視使用上述複雜查詢,則需要仔細處理計算度量,並應將其移動到需要在分析檢視之上建模的附加計算檢視中。分析檢視充當計算檢視的資料來源,計算檢視定義計算度量。“聚合前計算”選項的計算度量必須保留在分析檢視中。

更新於:2020年2月17日

207 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.