计算 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界面非常相似。
然后通过选择列并单击“删除列”来删除“开始日期”和“结束日期”列
如有错误请见谅,第一次发帖!
我有一个数据集,我已使用 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界面非常相似。
然后通过选择列并单击“删除列”来删除“开始日期”和“结束日期”列