【问题标题】:One to Many - Calculated Column一对多 - 计算列
【发布时间】:2013-01-23 16:07:45
【问题描述】:

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

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

我有一个包含文件信息的表——它有:
ID 文件名 当前状态 上传者

然后是一个表,其中包含文件所经历的状态(与文件表有很多关系):
文件ID 状态ID 时间戳

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

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

提前,非常感谢, 布伦特

【问题讨论】:

    标签: ssas dax


    【解决方案1】:

    这里有一个公式应该适用于你想做的事情......

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        • 1970-01-01
        • 1970-01-01
        • 2013-03-12
        • 1970-01-01
        • 1970-01-01
        • 2022-08-16
        相关资源
        最近更新 更多