news 2026/4/18 3:43:40

使用 dbt_set_similarity 测量跨产品采纳情况

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 dbt_set_similarity 测量跨产品采纳情况

原文:towardsdatascience.com/measuring-cross-product-adoption-using-dbt-set-similarity-fdf7c1f88bc2?source=collection_archive---------1-----------------------#2024-12-28

在 dbt 工作流中增强跨产品洞察

https://medium.com/@senick.matthew?source=post_page---byline--fdf7c1f88bc2--------------------------------https://towardsdatascience.com/?source=post_page---byline--fdf7c1f88bc2-------------------------------- Matthew Senick

·发布于 Towards Data Science ·5 分钟阅读·2024 年 12 月 28 日

介绍

对于多产品公司,一个关键的指标通常被称为“跨产品采纳”(即了解用户如何与产品组合中的多个产品互动)。

在流行书籍Hacking Growth[1] 中,建议使用一种衡量跨产品或跨特征使用情况的指标,即杰卡德指数。杰卡德指数传统上用于衡量两个集合之间的相似度,也可以作为评估产品采纳模式的强大工具。它通过量化产品之间用户的重叠,帮助识别跨产品协同效应和增长机会。

dbt 包dbt_set_similarity旨在简化在分析工作流中直接计算集合相似度指标的过程。该包提供了一种方法,可以在 SQL 转换层中计算杰卡德指数。

要将此包导入到您的 dbt 项目中,请将以下内容添加到packages.yml文件中。为了本文的示例,我们还需要 dbt_utils。请在项目中运行dbt deps命令来安装该包。

packages:-package:Matts52/dbt_set_similarity version:0.1.1-package:dbt-labs/dbt_utils version:1.3.0

杰卡德指数

杰卡德指数(Jaccard Index),也称为杰卡德相似度系数,是一种用于衡量两个集合相似度的指标。它的定义是两个集合交集的大小除以它们并集的大小。

从数学角度来看,它可以表示为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b852489e4adafbcf4e5142059b2563f2.png

杰卡德指数表示两个集合的“交集”与它们的“并集”的比值(图由作者提供)

其中:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a162cf1562e9ce0ccb3f78452c055ad4.png

(图像由作者提供)

Jaccard 指数在交叉产品采用的背景下特别有用,因为:

例如:

示例数据

我们将使用的示例数据集是一个虚构的 SaaS 公司,提供存储空间作为产品给消费者。该公司提供两种不同的存储产品:文档存储(doc_storage)和照片存储(photo_storage)。这些值要么为真,表示产品已被采用,要么为假,表示产品未被采用。

此外,该公司服务的用户群体(user_category)要么是科技爱好者,要么是房主。

为了这个示例,我们将在 dbt 项目中将此 CSV 文件作为名为seed_example的“种子”模型读取。

简单的交叉产品采用

现在,假设我们想要计算文档存储和照片存储产品之间的 Jaccard 指数(交叉采用)。首先,我们需要创建一个包含使用文档存储产品的用户的数组(列表),以及一个包含使用照片存储产品的用户的数组。在第二个 CTE 中,我们应用dbt_set_similarity包中的jaccard_coef函数,帮助我们轻松计算这两个用户 ID 数组之间的 Jaccard 系数。

withproduct_usersas(select array_agg(user_id)filter(where doc_storage=true)asdoc_storage_users,array_agg(user_id)filter(where photo_storage=true)asphoto_storage_usersfrom{{ref('seed_example')}})select doc_storage_users,photo_storage_users,{{dbt_set_similarity.jaccard_coef('doc_storage_users','photo_storage_users')}}ascross_product_jaccard_coeffromproduct_users

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/529e9b291bf1faf07a77a46845db4c94.png

来自上述 dbt 模型的输出(图像由作者提供)

如我们所见,似乎超过一半(60%)的采用了任何一个产品的用户,也采用了两个产品。我们可以通过将用户 ID 集合放入维恩图中来图形化验证我们的结果,在那里我们看到三位用户同时采用了这两个产品,在五位用户中占比为 3/5 = 0.6。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3c4bc717a8204033fd7e53e5b3fac24b.png

用户 ID 和产品采用的集合是什么样的,验证我们的结果(图像由作者提供)

分段交叉产品采用

使用dbt_set_similarity包,创建不同用户类别的分段 Jaccard 指数应该是非常自然的。我们将遵循之前的模式,然而,我们将仅仅在用户类别上对我们的聚合进行分组。

withproduct_usersas(select user_category,array_agg(user_id)filter(where doc_storage=true)asdoc_storage_users,array_agg(user_id)filter(where photo_storage=true)asphoto_storage_usersfrom{{ref('seed_example')}}group by user_category)select user_category,doc_storage_users,photo_storage_users,{{dbt_set_similarity.jaccard_coef('doc_storage_users','photo_storage_users')}}ascross_product_jaccard_coeffromproduct_users

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/17ee449e92cd117d800aa2f482a6bba5.png

来自上述 dbt 模型的输出(图像由作者提供)

从输出结果来看,考虑到杰卡德指数,房主的跨产品采用率较高。如上所示,所有已采用其中一种产品的房主都已经采用了两种产品。与此同时,只有三分之一的科技爱好者在采用一种产品后也采用了两种产品。因此,在我们这个非常小的数据集中,房主的跨产品采用率高于科技爱好者。

我们可以通过再次绘制韦恩图来图形化验证输出结果:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/19568107b9ad9d3a3154ca096d7158ff.png

按照两个细分市场划分的韦恩图(图片由作者提供)

结论

dbt_set_similarity提供了一种直接在 dbt 工作流中计算跨产品采用指标(例如杰卡德指数)的简单有效方法。通过应用此方法,多产品公司可以深入了解用户行为和产品组合中的采用模式。在我们的示例中,我们演示了整体跨产品采用率的计算,以及对不同用户类别的细分采用情况。

使用该包进行跨产品采用分析只是其中一种直接的应用。实际上,这种技术有无数其他潜在应用,例如:

此外,这种分析方式显然不仅限于 SaaS,几乎可以应用于任何行业。祝你使用杰卡德指数愉快!

参考文献

[1] Sean Ellis 和 Morgan Brown, Hacking Growth(2017 年)

资源

dbt 包中心

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 4:52:44

Qwen3-VL-2B免费部署方案:零成本实现视觉理解服务

Qwen3-VL-2B免费部署方案:零成本实现视觉理解服务 1. 这不是“会看图的聊天机器人”,而是一个能真正读懂图像的AI助手 你有没有试过把一张商品截图发给AI,让它告诉你图里写了什么、是什么品牌、价格多少?或者上传一张会议白板照…

作者头像 李华
网站建设 2026/4/16 14:18:50

DASD-4B-Thinking快速入门:科学推理模型实战指南

DASD-4B-Thinking快速入门:科学推理模型实战指南 你有没有试过让AI解一道高中物理题,结果它跳步、漏条件,甚至算错单位?或者写一段Python代码,生成的逻辑看似合理,运行却报错?更常见的是——面…

作者头像 李华
网站建设 2026/4/17 13:57:24

通义千问2.5-0.5B-Instruct物流调度:手持终端智能建议系统

通义千问2.5-0.5B-Instruct物流调度:手持终端智能建议系统 1. 为什么物流一线需要“能装进手机的AI”? 你有没有见过这样的场景:仓库分拣员站在传送带旁,手里拿着一台屏幕略显陈旧的手持终端,一边核对订单号&#xf…

作者头像 李华
网站建设 2026/4/16 12:13:01

Qwen-Image-2512镜像免配置:自动挂载本地目录实现生成图永久保存

Qwen-Image-2512镜像免配置:自动挂载本地目录实现生成图永久保存 1. 为什么“生成完就消失”是文生图最让人抓狂的体验? 你有没有过这样的经历:灵光一闪,输入一段绝妙的提示词,几秒后一张惊艳的图跃然屏上——正想保…

作者头像 李华
网站建设 2026/4/17 6:05:50

XNB文件处理神器:从入门到精通的星露谷资源修改全攻略

XNB文件处理神器:从入门到精通的星露谷资源修改全攻略 【免费下载链接】xnbcli A CLI tool for XNB packing/unpacking purpose built for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/xn/xnbcli 核心功能解析:XNB工具是什么&…

作者头像 李华