在PowerBI中计算每个月的有效新用户

在用户增长分析中,"有效新用户"是一个关键指标,它通常指在一定时间内首次使用产品或服务,并满足特定活跃条件的用户。本篇文章将介绍如何在PowerBI中计算每个月的有效新用户。

问题描述

自行建模计算每个月的有效新用户,其中有效新用户的定义为:在本月连续登录不少于3天的新用户,要求如下:

1、基本要求:正确计算明细行的结果

2、进阶要求:确保总计正确

本案例初始数据只有单个表,其完整数据如下:

登录信息表:

user_idlog_time
11012025/2/9 0:00:00
11012025/2/10 0:00:00
11012025/2/11 0:00:00
11022025/2/9 0:00:00
11032025/2/18 0:00:00
11032025/2/19 0:00:00
11032025/2/20 0:00:00
11042025/2/1 0:00:00
11042025/2/10 0:00:00
11042025/3/3 0:00:00
11042025/3/4 0:00:00
11042025/3/5 0:00:00
11052025/3/8 0:00:00
11062025/3/9 0:00:00
11072025/3/20 0:00:00
11072025/3/21 0:00:00
11072025/3/22 0:00:00
11082025/3/11 0:00:00
11082025/3/18 0:00:00
11082025/3/19 0:00:00
11082025/3/20 0:00:00
11092025/3/29 0:00:00
11092025/3/30 0:00:00
11092025/3/31 0:00:00

若需其它辅助表等,可自行创建并建模。

解题要点

1、首先需要找出新用户,然后再从中找到满足活跃条件的有效新用户。

2、新用户的计算方法很多,本文采用的算法为:若某个用户是本月的新用户,那么该用户的首次登陆日期必定在本月中。

3、关于连续日期的计算要点,可以参考下表的分组字段:

日期序号分组(日期-序号)
2025/2/10145697
2025/2/11245697
2025/2/12345697
2025/2/14445698
2025/2/15545698
2025/2/16645698
2025/2/17745698
2025/2/20845700
2025/2/21945700

解决方案

首先创建一个日期表,然后与登录信息表建立一对多关系,如下图所示:

所用到的度量值如下:

有效新用户 = 
CALCULATE(
    VAR AvailableCustomerEachMonth = 
        GENERATE(
            VALUES('Calendar'[YearMonth]),
            VAR N = 3
            VAR NewCustomer = FILTER(ALL('登录信息表'[user_id]),FIRSTDATE('登录信息表'[log_time]) IN DATEADD('Calendar'[Date],0,DAY))
            RETURN
            FILTER(
                NewCustomer,
                VAR LogRecord = CALCULATETABLE(DISTINCT('登录信息表'),CROSSFILTER('登录信息表'[log_time],'Calendar'[Date],OneWay))
                VAR Grp = ADDCOLUMNS(LogRecord,"Grp",'登录信息表'[log_time]-ROWNUMBER(LogRecord,ORDERBY('登录信息表'[log_time])))
                RETURN
                MAXX(SUMMARIZE(Grp,[Grp],"a",COUNT('登录信息表'[log_time])),[a])>=N
            )
        )
    RETURN
    IF(ISFILTERED('Calendar'[YearMonth]),
        CONCATENATEX(AvailableCustomerEachMonth,'登录信息表'[user_id]," , "),
        COUNTROWS(AvailableCustomerEachMonth)
    ),
    CROSSFILTER('Calendar'[Date],'登录信息表'[log_time],None)
)

最后创建一个矩阵,并将日期表中的月份字段作为行标签,再将上面的度量值放入值字段即可,如下图所示:

其他方案

以下解决方案精选自技术交流群中的其他小伙伴,希望他们的独到见解和解决思路能够为大家提供更多启发,内容已征得同意,特此分享出来供大家参考和借鉴。

1、WT:

2、XSY:

总结

以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!

PBI/DAX技术交流群(QQ):344353627

<think>首先,用户的问题是:“我想查找在PowerBI中使用函数计算皮尔逊相关系数的方法”。用户引用了几个资料,但强调说“上述引用仅供参考”,并指示“请尽可能多的参考用户上一次的问题和你的回答”。 回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 用户上一次的问题是什么?在这个会话中,用户的新问题是关于PowerBI中使用函数计算皮尔逊相关系数的方法。而用户提到“参考用户上一次的问题和你的回答”,但在当前上下文,我作为AI,需要回想之前的互动。 在提供的系统指令中,有一个示例是关于快速排序的,但那是示例的一部分。用户当前的查询是新的,所以我应该基于用户的当前查询来回答。 用户引用了四个引用: - 引用[1]: 关于皮尔逊相关系数和斯皮尔曼相关系数的介绍。 - 引用[2]: 关于Kendall相关系数的介绍。 - 引用[3]: 关于MATLAB中使用corrcoef函数进行皮尔逊相关性分析。 - 引用[4]: 关于Power BI中的数据可视化,包括使用Python/R可视化库。 用户明确说:“上述引用仅供参考,并不是用户真正的需求”,所以我不应该直接依赖这些引用。用户的真正需求是查找在PowerBI中使用函数计算皮尔逊相关系数的方法。 作为AI,我需要提供准确的信息。在Power BI中,计算皮尔逊相关系数的方法: - Power BI本身没有内置的皮尔逊相关系数函数,但可以通过DAX(Data Analysis Expressions)手动计算。 - 另一种方法是使用Power BI的集成功能,如调用R或Python脚本,因为这些语言有内置的相关性计算函数。 基于我的知识: 1. 使用DAX手动计算皮尔逊相关系数:皮尔逊相关系数的公式是: $$ r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} $$ 在DAX中,可以创建度量值来计算这个。 2. 使用R或Python脚本:在Power BI Desktop中,可以集成R或Python,使用cor()函数(在R中)或pearsonr()函数(在Python的scipy.stats中)来计算。 用户指定“使用函数”,所以可能指的是DAX函数。 现在,回答结构: - 回答应该清晰、逐步解决问题。 - 使用中文。 - 包括数学表达式:行内用$...$,独立用$$...$$。 - 结束时生成相关问题。 - 如果有引用,自然地添加引用标识。 由于用户说引用仅供参考,我可以参考通用知识或标准文档。但用户提供了引用[4],提到Power BI文档,所以我可以在回答中适当引用。 计划回答: 1. 介绍皮尔逊相关系数简要。 2. 解释在Power BI计算的方法: - 方法1:使用DAX手动计算(提供公式和DAX代码示例)。 - 方法2:使用R或Python脚本集成。 3. 给出简单示例。 4. 结束时生成相关问题。 数学表达式: - 皮尔逊相关系数的公式:独立公式,用$$...$$。 - 内部计算如均值等,用行内$...$。 最后,生成相关问题: - 类似示例,如§§相关问题§§。 确保回答真实可靠: - 基于Power BI的标准功能: - DAX计算:需要计算协方差和标准差。 - R/Python集成:参考官方文档。 参考用户提供的引用: - 引用[3]提到MATLAB的corrcoef,但用户要PowerBI。 - 引用[4]提到Power BI文档,所以我可以链接到Microsoft文档。 添加引用标识:例如,如果在回答中提到公式或方法,可以在末尾加[^1],但用户引用是[^1]到[^4],我应该定义自己的引用或使用通用知识。或许在回答中自然地提到来源。 用户指令说:“回答中引用的段落末尾自然地添加引用标识”,所以我应该在引用特定内容时加标识。 例如: 在Power BI中,您可以使用DAX来计算皮尔逊相关系数,公式如下:$$ r = ... $$ [基于标准统计公式] 但为了简单,我可以不使用外部引用,或者使用Power BI文档作为参考。 最终回答结构: - 开头回应问题。 - 解释方法。 - 提供代码示例(使用代码块)。 - 结束时生成相关问题。 代码块:在系统指令示例中,有Python代码块,所以我可以为DAX代码添加代码块。 </think>基于您的查询,我将详细解释在Power BI中使用函数计算皮尔逊相关系数的方法。皮尔逊相关系数(Pearson Correlation Coefficient)度量两个连续变量之间的线性相关程度,其公式为: $$ r = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n} (x_i - \bar{x})^2 \sum_{i=1}^{n} (y_i - \bar{y})^2}} $$ 其中,$x_i$ 和 $y_i$ 是数据点,$\bar{x}$ 和 $\bar{y}$ 是变量的均值,$n$ 是样本数量。值的范围是 $[-1, 1]$,越接近1表示强正相关,接近-1表示强负相关,0表示无线性相关。 在Power BI中,没有内置的DAX函数直接计算皮尔逊相关系数,但可以通过以下两种方法实现(推荐方法1用于纯DAX解决方案,方法2用于高级集成): ### 方法1: 使用DAX函数手动计算(推荐) 这是一种纯DAX方式,无需外部工具。步骤包括: 1. **计算每个变量的均值和偏差**:使用DAX函数如 `AVERAGE` 和 `SUMX`。 2. **计算协方差和方差**:应用公式中的各部分。 3. **组合成相关系数**:通过除法得到最终结果。 **示例代码**(假设数据表名为 `SalesData`,包含字段 `Sales` 和 `Profit`): ```dax // 计算平均值 Avg_Sales = AVERAGE(SalesData[Sales]) Avg_Profit = AVERAGE(SalesData[Profit]) // 计算偏差乘积和 Sum_Deviation_Product = SUMX( SalesData, (SalesData[Sales] - [Avg_Sales]) * (SalesData[Profit] - [Avg_Profit]) ) // 计算平方和 Sum_Squared_Deviation_Sales = SUMX( SalesData, (SalesData[Sales] - [Avg_Sales]) ^ 2 ) Sum_Squared_Deviation_Profit = SUMX( SalesData, (SalesData[Profit] - [Avg_Profit]) ^ 2 ) // 计算皮尔逊相关系数 Pearson_Correlation = DIVIDE( [Sum_Deviation_Product], SQRT([Sum_Squared_Deviation_Sales] * [Sum_Squared_Deviation_Profit]) ) ``` 将此度量值添加到报表中,即可在可视化控件中显示相关系数。此方法兼容所有Power BI版本,并能实时刷新数据[^1]。 ### 方法2: 使用R或Python脚本集成 如果数据量大或需要更高效计算,可以通过Power BI的Python或R集成功能调用内置统计函数: - **Python示例**:使用 `scipy.stats.pearsonr` 函数。 - **R示例**:使用 `cor()` 函数。 **步骤**: 1. 在Power BI Desktop中,转到“获取数据” > “更多...” > 选择“脚本” > Python或R。 2. 输入脚本计算相关系数并返回结果表。 3. 在报表中绑定数据。 **Python代码示例**(在Power BI的Python脚本编辑器中): ```python import pandas as pd from scipy.stats import pearsonr # 假设df是Power BI传入的数据帧 correlation, _ = pearsonr(df['Sales'], df['Profit']) result_df = pd.DataFrame({'Metric': ['Pearson_Correlation'], 'Value': [correlation]}) # 输出结果 result_df ``` **R代码示例**: ```r # 假设df是Power BI传入的数据帧 correlation <- cor(df$Sales, df$Profit, use = "complete.obs") result <- data.frame(Metric = "Pearson_Correlation", Value = correlation) # 输出结果 result ``` 此方法适用于复杂分析,但需要安装Python或R环境,并确保数据在脚本中正确处理[^3][^4]。 ### 注意事项 - **数据准备**:确保变量是连续数值型,处理缺失值(例如使用 `FILTER` 在DAX中排除空值)。 - **性能优化**:对大表,优先使用方法2(Python/R),因为DAX计算可能较慢;小数据集使用DAX即可。 - **可视化**:计算结果后,可在Power BI中添加卡片图或表格显示 $r$ 值,或结合散点图分析相关性趋势。 通过上述方法,您可以在Power BI中高效计算皮尔逊相关系数。更多实现细节可参考Microsoft官方文档[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PowerBI | 夕枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值