掛在IcCube有一個時間嚮導通過一系列的選項索引。然後,我可以將此維連接到一個事實表,其中包含開始字段和結束字段。IcCube - OLAP時間維度與範圍只在開始日期
但不幸的是我有一個事實表,只有開始的日期,我想給他們以這種方式連接,該條目是有效的,直到我有相同的按鍵另一項。這是可能的,還是我必須將結束日期添加到每個條目?
掛在IcCube有一個時間嚮導通過一系列的選項索引。然後,我可以將此維連接到一個事實表,其中包含開始字段和結束字段。IcCube - OLAP時間維度與範圍只在開始日期
但不幸的是我有一個事實表,只有開始的日期,我想給他們以這種方式連接,該條目是有效的,直到我有相同的按鍵另一項。這是可能的,還是我必須將結束日期添加到每個條目?
如果我理解正確的,你一個事實表具有以下structrue
Dim1, DimTime, Amount
1 , 1 Feb 2014, 2.4
2 , 8 Feb 2014, 1.4
3 , 3 Feb 2014, 3.4
您想從[2月1日,2月3日),從第三行[3第一行綁定2月8日,2月8日)等。
如果是這樣的情況下,有沒有簡單的方法。理想情況下,您計算數據源中的to)部分,或者您可以使用icCube的ETL層在那裏解決它(帶緩存的Javascript)。注意最後一個對於非常大的表格來說不是一個好方法。
如果您可以通過時間列順序算法將無需緩存整個表容易得多。
您可以使用一個Javascript視圖描述here在這個link一個模式的例子。
希望它有幫助
謝謝你的模式。不幸的是,我無法打開IcCube中的模式。它說,模式是錯誤的。但看看代碼有很多幫助。我改變了JavaScript的一點,因爲是與日期的問題,我增加了一個漸變維度的可能性:
內存:
Dim1, DimTime, Amount
1,1 Feb 2014,2.4
1,3 Feb 2014,1.4
1,11 Feb 2014,1.4
2,4 Feb 2014,2.4
2,8 Feb 2014,1.4
3,3 Feb 2014,3.4
3,7 Feb 2014,6.4
初始化代碼:
var SCD = "Dim1";
var formerRow = null;
var currentRow = null;
var rowNumber = 0;
var jDateType = Java.type("org.joda.time.LocalDate");
var jDateNow = new jDateType();
行處理行:
currentRow = copy();
set(currentRow, "TO", jDateNow);
if (formerRow === null) {
// first Line, copy the current row
formerRow = copy();
currentRow = null;
} else if (get(currentRow,SCD) != get(formerRow,SCD)) {
set(formerRow, "TO", jDateNow);
fire(formerRow, rowNumber++);
formerRow = currentRow;
currentRow = null;
} else {
// second Line
set(formerRow, "TO", get(currentRow,"DimTime").plusDays(-1));
fire(formerRow, rowNumber++);
formerRow = currentRow;
currentRow = null;
}
完成代碼:
也就是說,我試圖做的。很遺憾,它不起作用。任何機會,這將在未來實施嗎?它肯定會幫助顯示IcCube中的更新日誌。 – UlrichWuenstel
如果它是一個更新日誌,它最有可能排序,你是否嘗試過一個視圖(不需要緩存)? – ic3
問題是1)它被排序? 2)如果不是,桌子有多大? – ic3