如何在 PowerBI 中使用 DAX 计算平均每周活跃访客
How to calculate average weekly active visitor using DAX in PowerBI
*请注意,Visit 1
表示当天的第一次访问,而 Visit 2
表示当天的第二次访问。
大家好,
我正在尝试使用 DAX 计算 PowerBI 中的平均每周活跃访问者。
首先,我需要计算一周(周一至周日)有多少唯一身份访问者访问了商店。根据日历,5/10/2022 - 5/13/2022
将归入一周,而 5/16/2022 - 5/18/2022
将归入另一周。因此,从 5/10/2022 - 5/13/2022
开始的那一周,有 9 个唯一身份访问者,从 5/16/2022 - 5/18/2022
开始的那一周,有 3 个唯一身份访问者。
一旦我找到了相应周的唯一身份访问者,我就可以通过以下方式获得平均每周活跃访问者:
(9+3)/2 = 6 visitors
因此,屏幕截图中示例的答案将是 6 个访问者。输出将用于卡片可视化。
正在努力寻找最佳方法,如有任何帮助或建议,我们将不胜感激!
示例数据:
https://docs.google.com/spreadsheets/d/10TsJUy-Lkdpb9Eeh5itx-XE59hytC_i5I_6UeLLHS84/edit#gid=0
VAR days =
SUMMARIZE(
'Sheet1'
,'Sheet1'[Date]
)
VAR Calend=
ADDCOLUMNS(
days
,"week",WEEKNUM('Sheet1'[Date])
)
VAR weeks=
SUMMARIZE(
Calend
,[week]
,"qty",COUNTROWS(VALUES('Sheet1'[Visitor ID]))
)
RETURN
AVERAGEX(
weeks
,[qty]
)
我对 DAX(或 Power BI)了解不够,无法设计仅 DAX 的解决方案。
但是,您可以使用 Power Query M 代码(主页 => 在 Power BI 中转换)计算每周独立访客,然后创建一个度量以在卡片上显示每周平均访客。
Power Query M代码
编辑:从计算 weeknumber
更改为计算 start of week
以避免日期跨度超过一年时出现问题,根据 @weizer[ 下方的评论=34=]
let
//change next line to whatever your actual source is
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
//Don't need this column for the output
#"Removed Columns" = Table.RemoveColumns(Source,{"Visit"}),
//Set data types
#"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Visitor ID", Int64.Type}, {"Date", type date}}),
//add custom column referenced to "StartOfWeek" so we can group by week
#"Added Custom" = Table.AddColumn(#"Changed Type", "WeekNumber", each Date.StartOfWeek([Date],Day.Monday), type date),
//Group by week number
// Then aggregate by week range and distinct visitor count
#"Grouped Rows" = Table.Group(#"Added Custom", {"WeekNumber"}, {
{"Date Range", each Date.ToText(List.Min([Date])) & " - " & Date.ToText(List.Max([Date])), type text},
{"Distinct Visitors", each List.Count(List.Distinct([Visitor ID])), Int64.Type}
}),
//Remove unneeded Weeknumber column
#"Removed Columns1" = Table.RemoveColumns(#"Grouped Rows",{"WeekNumber"})
in
#"Removed Columns1"
卡的度量将只是一个简单的平均函数:
Distinct Visitors per Week = Average(yourTableName[Distinct Visitors])
*请注意,Visit 1
表示当天的第一次访问,而 Visit 2
表示当天的第二次访问。
大家好,
我正在尝试使用 DAX 计算 PowerBI 中的平均每周活跃访问者。
首先,我需要计算一周(周一至周日)有多少唯一身份访问者访问了商店。根据日历,5/10/2022 - 5/13/2022
将归入一周,而 5/16/2022 - 5/18/2022
将归入另一周。因此,从 5/10/2022 - 5/13/2022
开始的那一周,有 9 个唯一身份访问者,从 5/16/2022 - 5/18/2022
开始的那一周,有 3 个唯一身份访问者。
一旦我找到了相应周的唯一身份访问者,我就可以通过以下方式获得平均每周活跃访问者:
(9+3)/2 = 6 visitors
因此,屏幕截图中示例的答案将是 6 个访问者。输出将用于卡片可视化。
正在努力寻找最佳方法,如有任何帮助或建议,我们将不胜感激!
示例数据:
https://docs.google.com/spreadsheets/d/10TsJUy-Lkdpb9Eeh5itx-XE59hytC_i5I_6UeLLHS84/edit#gid=0
VAR days =
SUMMARIZE(
'Sheet1'
,'Sheet1'[Date]
)
VAR Calend=
ADDCOLUMNS(
days
,"week",WEEKNUM('Sheet1'[Date])
)
VAR weeks=
SUMMARIZE(
Calend
,[week]
,"qty",COUNTROWS(VALUES('Sheet1'[Visitor ID]))
)
RETURN
AVERAGEX(
weeks
,[qty]
)
我对 DAX(或 Power BI)了解不够,无法设计仅 DAX 的解决方案。
但是,您可以使用 Power Query M 代码(主页 => 在 Power BI 中转换)计算每周独立访客,然后创建一个度量以在卡片上显示每周平均访客。
Power Query M代码
编辑:从计算 weeknumber
更改为计算 start of week
以避免日期跨度超过一年时出现问题,根据 @weizer[ 下方的评论=34=]
let
//change next line to whatever your actual source is
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
//Don't need this column for the output
#"Removed Columns" = Table.RemoveColumns(Source,{"Visit"}),
//Set data types
#"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Visitor ID", Int64.Type}, {"Date", type date}}),
//add custom column referenced to "StartOfWeek" so we can group by week
#"Added Custom" = Table.AddColumn(#"Changed Type", "WeekNumber", each Date.StartOfWeek([Date],Day.Monday), type date),
//Group by week number
// Then aggregate by week range and distinct visitor count
#"Grouped Rows" = Table.Group(#"Added Custom", {"WeekNumber"}, {
{"Date Range", each Date.ToText(List.Min([Date])) & " - " & Date.ToText(List.Max([Date])), type text},
{"Distinct Visitors", each List.Count(List.Distinct([Visitor ID])), Int64.Type}
}),
//Remove unneeded Weeknumber column
#"Removed Columns1" = Table.RemoveColumns(#"Grouped Rows",{"WeekNumber"})
in
#"Removed Columns1"
卡的度量将只是一个简单的平均函数:
Distinct Visitors per Week = Average(yourTableName[Distinct Visitors])