【问题标题】:create a summary table in power pivot or power query在 power pivot 或 power query 中创建汇总表
【发布时间】:2016-02-07 00:11:14
【问题描述】:

系统:Excel 2013

已创建一个包含多列的主文件,包括 1 个 ID 列和 2 个日期列(创建日期和发布日期)。

ID      CreateDate  Release Date
124520  04/09/2015  05/09/2015
228551  05/09/2015  07/09/2015
228552  06/09/2015  08/09/2015

如何使用 PowerPivot 或 PowerQuery 创建如下所示的汇总表?

Date        NumOfIDsCreated     NumOfIDsReleased
04/09/2015  1                   0
05/09/2015  1                   1
06/09/2015  1                   0
07/09/2015  0                   1
08/09/2015  0                   1

目前,我在 Excel 中创建此表,其中包含两个 powerpivot 表(带有日期和计数)和一个包含所有日期的单独表,以便从两个 powerpivot 表中运行查找。有更好的方法吗?

【问题讨论】:

    标签: powerpivot powerquery


    【解决方案1】:

    这是转换表格的另一种方法

    关键是 - 在group_by_date中使用可计算的记录。

    let
        src = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        change_types = Table.TransformColumnTypes(src,{{"CreateDate", type date}, {"ReleaseDate", type date}}),
        unpivot = Table.UnpivotOtherColumns(change_types, {"ID"}, "attr", "value"),
        group_by_date = Table.Group(unpivot, {"value"}, {{"rec", each 
        [
            NumOfIDsCreated=List.Count(List.Select([attr], each _="CreateDate")),
            NumOfIDsReleased=List.Count(List.Select([attr], each _="ReleaseDate"))
        ]}}),
        expand = Table.ExpandRecordColumn(group_by_date, "rec", {"NumOfIDsCreated", "NumOfIDsReleased"}, {"NumOfIDsCreated", "NumOfIDsReleased"}),
        sort = Table.Sort(expand,{{"value", Order.Ascending}})
    in
        sort
    

    【讨论】:

    • 有没有办法让 src = 在 powerpivot 中创建的表/数据模型?
    【解决方案2】:

    如果您想在 Power Pivot 模型中将其创建为表,那么 Power Query 是适用于 2016 年之前的 Power Pivot 版本的方法,并且有另一个答案表明了这一点。

    如果您使用的是 2016+(据我所知,此功能应该出现在 GA 版本的 Excel 中)或 Power BI Desktop 应用程序,那么您可以使用 DAX 在您的模型中创建计算表:

    假设 FactTable[CreateDate] 和 DimDate[Date] 之间存在活动关系,而 FactTable[ReleaseDate] 和 DimDate[Date] 之间存在不活动关系。

    CreateDateCount:= // Note this is a measure
    COUNTROWS(FactTable)
    
    ReleaseDateCount:= // also a measure
    CALCULATE(
        COUNTROWS(FactTable)
        ,USERELATIONSHIP(FactTable[ReleaseDate], DimDate[Date])
    )
    
    SummarizedFact= // note this is a calculated table
    FILTER(
        ADDCOLUMNS(
            DimDate
            ,"IDsCreated"
            ,[CreateDateCount]
            ,"IDsReleased"
            ,[ReleaseDateCount]
        )
        ,[IDsCreated] || [IDsReleased]
    )
    

    最后,我想知道为什么这需要在您的模型中以表格形式存在,因为它似乎需要报告,并且通常在 Power Pivot 模型中,您会在数据透视表中执行此工作,而不是在 PP 模型中.如果这是您实际需要的用例,那么我上面写的措施也适用。

    【讨论】:

    • 是报表需要,而主文件是使用PowerQuery和PowerPivot组合创建的,所以这两个日期在PowerPivot中使用Related func只在同一个表中... 是否还有一种应用方法?
    • 我不明白你的问题。您的模型中没有包含第一个示例结构的表格吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多