系统: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表(包含日期和计数)和一个包含所有Dates的单独表,以便从两个powerpivot表中运行查找。有没有更好的方法呢?
答案 0 :(得分:0)
关键点是 - 在 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
答案 1 :(得分:0)
如果您想在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模型。如果这是您实际需要的用例,那么我上面提到的措施也适用于此。