\nSAP HANA分析檢視查詢結果異常\n
您沒有提供您試圖實現的目標的完整細節。請參考SAP OSS 筆記 1993033 分析檢視查詢結果錯誤
在啟用分析檢視時,會生成列檢視。但是,某些工件無法在此列檢視中計算。在這種情況下,會在其頂部生成一個額外的計算檢視。如果在分析檢視中定義了以下元素,則必須執行計算檢視的生成
- 輸入引數
- 計算屬性
- 單位或貨幣轉換
如果在分析檢視中定義了至少一個這些元素,則啟用會建立一個OLAP檢視和一個計算檢視。執行時的查詢始終指向計算檢視,計算檢視本身從OLAP檢視檢索資料。計算檢視獲取已聚合的資料,並且根據計算度量的公式和複雜性,對計算度量的查詢可能會返回意外的結果。
關於計算度量的放置,有三種可能性
- OLAP,聚合前計算(這必須在分析檢視中顯式標記)
- OLAP,聚合後計算(預設行為)
- 計算檢視
如果公式使用計算屬性、輸入引數或需要計算檢視的其他計算度量,則必須在計算檢視中計算計算度量。
現在,查詢的結果取決於公式及其計算位置。例如,如果公式將度量的值乘以某個因子,則公式可能對聚合透明:CM1 = M1 * 1000
結果始終相同,無論公式是在(sum)聚合之前還是之後計算。
但是,這並不適用於新增常數值的公式,例如 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)
解決方案 −
如果如上所述,將在分析檢視上使用此類複雜查詢,則需要仔細處理計算度量,並應將其移動到需要在分析檢視之上建模的附加計算檢視中。分析檢視作為計算檢視的資料來源,計算檢視定義計算度量。“聚合前計算”選項的計算度量必須保留在分析檢視中。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP