计算 2 个日期之间的活跃成员 PowerPivot DAX

Count active members between 2 dates PowerPivot DAX

如有错误请见谅,第一次发帖!

我有一个数据集,我已使用 PowerQuery 将其读入 Excel 数据模型,我将其拆分为 3 个 table,并通过唯一 ID 字段链接(所以一个主要的 table 只有唯一 ID 和一般信息,然后两个 table 从它链接)。

我想要做的是采用如下所示的链接 table 之一:

ID Start Date End Date Category
123456 01/01/2000 01/01/2001 A

我创建了一个单独的日期 table,我想要的是日期 table 的每个月的每个活动 ID 的计数,我使用 CALCULATE 和 FILTER 在日期 table。但是当我将其加载到 Pivot 中时,它会忽略类别。

我尝试使用另一个 table 的开始日期字段关联日期 table,但没有任何区别。

我发现大量涉及计算 table 的 PowerBI 解决方案,但必须基于 Excel。

提前致谢!

恐怕要在Power Query中扩展日期区间需要写一行M代码。

这是一个小示例,它创建了一个示例 table,其中包含问题中 table 的列。我使用了不同的值来简化示例。

想法是扩展日期间隔创建一个 M 列表,包含扩展的日期间隔。然后使用此列表创建具有新列“日期”的新行。

最后一步删除了“开始日期”和“结束日期”列

此代码可以直接粘贴到高级查询编辑器中以创建新的空白查询。

let
    Source = #table(
        type table
        [
            #"ID"=number, 
            #"Start Date"=date,
            #"End Date"=date,
            #"Category"=text
        ], 
        {
            {1,#date(2020,1,1),#date(2020,1,2), "A"},
            {2,#date(2020,1,10),#date(2020,1,12), "A"}
        }
    ),
    SourceWithList = Table.AddColumn(Source, "Date", 
        each List.Dates([Start Date], Duration.Days([End Date] - [Start Date]) + 1, #duration(1, 0, 0, 0))),
    #"Expanded DateList" = Table.ExpandListColumn(SourceWithList, "Date"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded DateList",{"Start Date", "End Date"})
in
    #"Removed Columns"

示例只需要 Source 语句来创建起始 table。

SourceWithList是要编写的M代码:它使用函数Table.AddColumn()添加一列,并使用函数List.Dates()创建新列。

此功能需要开始日期、持续时间和步长间隔。

持续时间是使用函数 Duration.Days() 计算的,returns 两个日期之间的差异作为天数。

要创建#"Expanded DateList" 步骤,可以使用 Power Query 界面,单击列菜单中的“扩展到新行”。我截的截图是在Power BI中,但是Power Query的Power Pivot界面非常相似。

然后通过选择列并单击“删除列”来删除“开始日期”和“结束日期”列