1

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

我在大部分方面都取得了不错的进展,只是弄清楚事情是如何工作的以及如何添加我需要的计算,但我一直在努力解决以下问题:

我有一个包含文件信息的表——它有:
ID FileName CurrentStatus UploadedBy

然后是一个表,其中包含文件经历的状态(与文件表有很多关系):
FileID StatusID TimeStamp

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

看起来这应该可以通过 DAX 实现,但我似乎无法理解它。有什么想法吗?

提前,非常感谢,布伦特

4

2 回答 2

0

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

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

是 LOOKUPVALUE 的 MSDN 描述。您提供包含要返回的值的列、要搜索的列以及要搜索的值。您可以向查找表添加多个条件。这是一篇博客文章,其中包含一个很好的示例。

于 2013-07-08T01:41:11.707 回答
0

这是一个应该适用于您想要做的事情的公式......

=MAXX(
    CALCULATETABLE(
         'FileStatus'
        ,'FileStatus'[StatusID] = 100
    )
    ,'FileStatus'[TimeStamp]
)
于 2013-01-29T02:55:33.917 回答