試圖在Pentaho Mondrian Cube中重新創建該公式。如何在mondrian mdx公式中使用IsLeaf?
IIF(ISLEAF([時間]。[月] .CurrentMember)),[措施] .m1,0)
該公式被在SSAS立方體使用已經。需要在Pentaho Mondrian Cube中重新創建類似的公式。
IsLeaf可以在mondrian中使用還是有其他選擇嗎?
試圖在Pentaho Mondrian Cube中重新創建該公式。如何在mondrian mdx公式中使用IsLeaf?
IIF(ISLEAF([時間]。[月] .CurrentMember)),[措施] .m1,0)
該公式被在SSAS立方體使用已經。需要在Pentaho Mondrian Cube中重新創建類似的公式。
IsLeaf可以在mondrian中使用還是有其他選擇嗎?
像下面這樣的東西應該在默認層次結構中的任意級別上工作。
如果您選擇[Time].[Year]
成員,它將返回去年的[Mesures] .m1,其中(具有非空m1度量並滿足您的過濾條件)。
或者如果您選擇[Time].[Month]
成員,它將返回去年最後一個月的度量值,該度量值具有非空m1度量。
雖然我不認爲如果混合使用不同級別的成員(例如WITH SET time_members AS {[Time].[2017], [Time].[2017].[1]. [Time].[2017].[1].[31]}
)
如果你不需要這樣一個通用的方法,那麼這種解決方案可以簡化和測量計算速度,將工作可能會得到改善。
警告:該查詢可能導致100%的CPU利用率(或者可能不會,我不確定),從而使您的服務器無響應。所以,請仔細選擇您的測試環境。
免責聲明:我目前沒有mondrian測試,所以下面的例子很可能有錯誤。
Iif(
// Check if current [Time] member is the last member:
[Time].CurrentMember
IS
// Take the 0th member from the end of the set (AFAIK, mondrian sets are guaranteed to be ordered):
Tail(
// AFAIK, Level.Members returns the full set of members, disregarding query filters.
// So I use Filter function to filter members, which don't exist in context of current cell.
// It should leave only members, which (are related to current cell and satisfy filter conditions of the query).
Filter(
[Time].CurrentMember.Level.members
// If your measure is nullable, then you might want to use count measure in this condition instead of m1:
, NOT IsEmpty([Measures].m1)
)
// Number of members to get by the Tail() function:
, 1
// Return the only member of the set as a Member (not as a Set):
).Item(0)
// return if true
, [Measures].m1
// else:
, 0
)
可能有問題,需要一些點進行測試:
如何測量計算,如果最後的[時間]成員都有空M1 措施(如果這是一個有效的情況下,爲您的措施)
如何在[時間] 層次結構的不同級別上計算度量值。
如果您不明確使用 報告中的[時間]維度,如何計算度量值。
如何如果你只使用[時間]維上限幅器 軸線量度被計算(在條件)
如何如果使用受限集合[時間] 成員,例如的所述量度來計算明確地枚舉集合文字中的成員(例如, {[Time].[2006].[01], [Time].[2006].[02]}
)或者通過使用維度上的過濾器() 函數。
如果在其他 尺寸/度量上使用度量單位,度量方式是如何計算的。
如何在[時間] 維度(包括由分析器生成的總計和小計)的計算成員上計算度量值。
如果在同一軸上選擇不同 級別的成員,該度量是如何計算的。
謝謝您的輸入..其爲我工作截至目前.. – Akira
您可以請查看以下查詢?當我在Pentaho Aggregation設計器中創建一個名爲AggTable1的聚合表時,此查詢就會生成。 選擇 'Dim_Time'.'Time_Id'如'c0', 'Dim_Time'.'month_no'從 'Dim_Time'如'c1' 如'Dim_Time' 其中 'Dim_Time'.'Time_Id' =' AggTable1'.'Dim_Time_Month_(鍵)' 組由 'Dim_Time'.'Time_Id', 'Dim_Time'.'month_no' 爲了通過 ISNULL('Dim_Time'.'Time_Id')ASC,'Dim_Time'.' Time_Id' ASC 爲什麼在from子句中沒有選擇AggTable1表? – Akira
對不起,沒有太多的聚合表經驗。我可以建議的唯一事情是檢查是否有不同的表具有相同的別名 - 在這種情況下,其中一個表不會出現在from子句中。 – user4637357
我不知道與SSAS。但你的要求是什麼? 如果你想要類似的例子:假設我想要所有男性的總和然後我將正確的是: SUM([categorized]。[MALE],[度量]。[性別])這是我的維度名稱。 –
@WorkingHard ..感謝您的輸入..我的要求是爲維度月的最後一個節點查找度量m1的值..例如,將有12個月的選擇..所以在報告中最後一行應該顯示上個月(本例中爲第12個月)的m1值。如何在Pentaho中執行此操作? – Akira
[Dim Month.columnname]。[1]如果它工作與否,請嘗試此操作。 –