首页 文章

在Microsoft BI中,当用户在两次选择数据时,如何为事实表建模

提问于
浏览
0

我有一个关于在一段时间内(开始和结束时间之间)选择所有数据的建模问题 . 我可能会最终使用Tabular / PowerPivot,但它也可以是PowerBI或excel直接查询数据库 .

Summary: 我有一个带有StartDateTime和EndDateTime列的事实表(Fact_Session) . 用户需要在开始和结束时间之间查看数据 . 第二个事实表(fact_Products)列出了用户使用特定设备扫描的产品及其扫描时间 .

Requirement: 当用户选择开始和结束时间时,他们需要查看:

  • 在Fact_Session中,开始和结束时间之间的所有会话 .

  • 所有产品在开始和结束时间之间扫描,在Fact_Products中

这很可能意味着两个数据透视表,其中数据通过维度链接,特别是时间维度 .

Issues/Questions:

  • 我需要两个时间维度,一个用于startTime,一个用于EndTime?

  • 如何将开始和结束时间之间的时间段绑定到FactProducts表?

感谢任何有关此的帮助和建议 .

半完整(无时间维度)逻辑图的图像如下所示 .

enter image description here

3 回答

  • 0

    是的,您需要两个单独的日期/时间维度 . 引用需要是独立的 . 查看Kimball Group中的这些信息

    虽然您不需要在数据库中创建一个完全独立的表,但不确定您对维度建模有多熟悉,因此视图就足够了,因为它允许独立引用 .

  • 0

    我认为显示所有产品和所有会话的要求限制了选项 . 如果您不需要显示详细信息,则可以使用断开连接的日期表,其中一个或两个,然后按照(在一个日期表的情况下)的行生成度量:

    CALCULATE (
        SUM ( [ProductIDCount] ),
        FILTER ( Fact_Products, Fact_Products[Time_Scanned] > MIN ( Calendar[Date] ) ),
        FILTER ( Fact_Products, Fact_Products[Time_Scanned] < MAX ( Calendar[Date] ) )
    )
    

    其中MIN(日历[日期])将是所选的最低日期,MAX是最高日期 . 但这不适用于Fact_Products的行级详细信息 . 它只适用于措施 .

    如果您通过Excel交付,则可以通过让用户从自动提供范围的时间线中选择日期来更改方法 . 获得范围后,您可以拥有一个连接日期表,它将为您提供所需的详细信息 . 心连心

  • 0

    我有相同的情况,因为我需要显示基于所选日期的任务列表,我使用的是这样的东西

    Active = CALCULATE(COUNTROWS(task), 
        FILTER(task, ([Start] <= LASTDATE(Mstdate[Date]) 
            && [finish]>= FIRSTDATE(Mstdate[Date]))))
    

    日期表不应该链接到事实表,然后我使用active> 0作为您的数据透视表中的过滤器

    你可以在这里下载模型https://app.powerbi.com/view?r=eyJrIjoiYjkwZTMyY2EtYTE1Ny00OWQzLWJlZDktNjkxN2JkOTA3ZmIxIiwidCI6ImI2ZWM3ZGYwLTc1ZGEtNDc2Ni04MGI0LWNlYzM1MzZlNGYzYSIsImMiOjEwfQ%3D%3D

相关问题