可视化分布
少数大额订单会把平均值拉高,使其超过大多数客户的消费金额。按百分位绘制购买金额,查看中位数、分布范围和最大订单。
百分位曲线显示购买量加速的位置以及长尾延伸的程度。
你将构建什么
您将记录个人购买金额,查询每个百分位数的值,并将结果绘制成图表。与平均值不同,这条曲线回答了以下问题:
- 典型的客户会花多少钱?查看 P50(中位数)附近。
- 高价值客户从哪里开始?比较 P75、P90 和 P95。
- 长尾有多极端?将 P99 与中位数进行比较。
百分位是一个阈值,而不是收入份额。如果 P90 为 148 美元,则 90% 的购买价格等于或低于 148 美元,10% 的购买价格高于 148 美元。
先决条件
- Telemetry 的有效 API 密钥
- 对JavaScript和Node.js有基本了解
- 电子商务平台或跟踪客户购买的任何系统
1.安装Telemetry SDK
首先,您需要在项目中安装 Telemetry SDK。如果您还没有这样做,请运行以下命令:
npm install telemetry-sh
2、初始化Telemetry
安装SDK后,在您的项目中导入并初始化Telemetry。将 YOUR_API_KEY 替换为您实际的 Telemetry API 密钥。
import telemetry from "telemetry-sh";
telemetry.init("YOUR_API_KEY");
3. 记录购买金额
为了可视化客户购买金额的分布,您需要记录每次购买的金额。以下是记录此数据的示例函数:
const logPurchaseAmount = (customerId, purchaseAmount) => {
telemetry.log("customer_purchases", {
customer_id: customerId, // The ID of the customer
purchase_amount: purchaseAmount, // The purchase amount in dollars
currency: "USD",
status: "completed"
});
};
// Example usage
logPurchaseAmount("customer_123", 49.99); // Log a purchase amount for a customer
logPurchaseAmount("customer_456", 120.50); // Log another purchase amount for a different customer
4. 仪器完成采购
您应该将系统设置为在交易完成时自动记录购买金额。这可以通过将日志记录功能集成到您的结账或支付处理系统中来完成。这是一个简化的示例:
const processPurchase = (customerId, amount) => {
// Additional logic for processing the purchase
// Log the purchase amount
logPurchaseAmount(customerId, amount);
};
// Example transactions
processPurchase("customer_123", 75.00); // Log a purchase of $75
processPurchase("customer_789", 300.00); // Log a purchase of $300
5、查询分布
记录足够的数据后,您可以使用 Telemetry 的 UI 可视化购买金额在百分位数上的分布。
- 创建百分位查询:
-
在 Telemetry UI 中,导航到查询部分。
-
使用以下类似 SQL 的查询来生成百分位数数据:
WITH purchases AS ( SELECT purchase_amount FROM customer_purchases WHERE timestamp_utc >= now() - INTERVAL '90 days' AND currency = 'USD' AND status = 'completed' ) SELECT 50 AS percentile, approx_percentile_cont(purchase_amount, 0.50) AS purchase_amount FROM purchases UNION ALL SELECT 75, approx_percentile_cont(purchase_amount, 0.75) FROM purchases UNION ALL SELECT 90, approx_percentile_cont(purchase_amount, 0.90) FROM purchases UNION ALL SELECT 95, approx_percentile_cont(purchase_amount, 0.95) FROM purchases UNION ALL SELECT 99, approx_percentile_cont(purchase_amount, 0.99) FROM purchases ORDER BY percentile; -
此查询会在大多数团队使用的百分位处生成一条紧凑的曲线。当更平滑的曲线实质上改变决策时,添加更多固定百分位行。
-
- 可视化数据:
- 在 UI 中,创建一个折线图,X 轴为
percentile,Y 轴为purchase_amount。 - 这将为您提供一条分布曲线,显示不同客户百分位数的购买金额如何变化,帮助您识别客户群内的支出模式。
- 在 UI 中,创建一个折线图,X 轴为
解读曲线
从P50开始了解典型购买情况,然后与P90和P99进行比较。右边缘附近的急剧上升表明有一个小的高支出部分;曲线越平坦表明支出分布越均匀。在对结果采取行动之前,过滤退款并测试交易,保持货币单位一致,并比较跨段的相同时间窗口。