2013-01-23 65 views
1

我正在嘗試自學新的SQL 2012 SSAS的表格模型,以處理先前在(緩慢)存儲過程中處理的一些分析報告。一對多 - 計算的列

我做的大部分是體面的進步,只是弄清楚是如何工作的,以及如何添加我需要的計算,但是我一直在敲我的頭靠在了以下內容:

我有了一個表文件信息 - 它具有:
ID 文件名 CurrentStatus UploadedBy

,然後在出現的狀態,該文件通過(一個一對多的關係,以文件表)去表:
寫到FileID StatusID 時間戳

我想要做的是將一個計算列添加到文件表,當文件處於特定狀態時返回TimeStamp信息。即:上傳StatusID = 100。我想在File表中添加一個名爲UploadedDate的計算列,該表具有來自FileStatus表的關聯TimeStamp信息。

DAX似乎應該可以實現,但我似乎無法將我的頭圍繞在它周圍。那裏有任何想法?

在進步,非常感謝, 布倫特

回答

0

這裏有一個公式,應該爲你希望做什麼工作?

=MAXX(
    CALCULATETABLE(
     'FileStatus' 
     ,'FileStatus'[StatusID] = 100 
    ) 
    ,'FileStatus'[TimeStamp] 
) 
0

我假設每個文件只能在每個狀態一次(每個FileID中只有一行具有StatusID 100)。我相信你可以使用lookupvalue公式。您UploadedDate計算列的公式會是這樣的

=LOOKUPVALUE(FileStatus[Timestamp], File[FileID], FileStatus[FileID], FileStatus[StatusID], 100) 

這裏的MSDN description of LOOKUPVALUE。您提供包含要返回的值,要搜索的列和要搜索的值的列。您可以將多個條件添加到查找表中。這裏有一個blog post,它包含一個很好的例子。