一对多 - 计算列

时间:2013-01-23 16:07:45

标签: ssas dax

我正在尝试自学SQL SQL SSAS的新Tabular模型来处理以前在(慢速)存储过程中处理的一些分析报告。

我在大部分方面取得了不错的进展,只是弄清楚事情是如何运作的以及如何添加我需要的计算但是我一直在抨击以下内容:

我有一个包含文件信息的表 - 它有:
ID 文件名 当前状态 UploadedBy

然后是一个具有该文件经过的状态的表(与文件表有很多关系):
写到FileID StatusID 时间戳

我要做的是将一个计算列添加到File表中,该表在文件处于特定状态时返回TimeStamp信息。即:上传StatusID = 100。我想在File表上添加一个名为UploadedDate的计算列,该列具有FileStatus表中关联的TimeStamp信息。

看起来这应该是DAX可行的,但我似乎无法绕过它。那里有什么想法吗?

事先,非常感谢, 布伦特

2 个答案:

答案 0 :(得分:0)

这是一个适合您想要做的公式......

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

答案 1 :(得分:0)

我假设每个文件只能在每个状态一次(每个FileID只有一行有StatusID 100)。我相信你可以使用lookupvalue公式。 UploadedDate计算列的公式类似于

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

这是MSDN description of LOOKUPVALUE。您提供的列包含要返回的值,要搜索的列以及要搜索的值。您可以向查找表添加多个条件。这是一个blog post,其中包含一个很好的例子。