? 场景1:动态利润率计算
某零售企业需实时监控各SKU的利润率波动,但原始数据仅提供“销售额”和“采购成本”,需动态计算利润率并分段展示。
配置步骤
- 新建“添加公式节点”,命名为“利润率计算”
- 输入源选择:订单明细表(含字段:sku_id, sales, cost)
- 输出字段定义:
- 字段名:
profit_margin
- 类型:数值(保留4位小数)
- 默认值:
0
- 公式编辑器输入(JavaScript模式):
// 计算利润率:(销售额 - 成本) / 销售额
const margin = ($sales - $cost) / $sales;
// 防止除零错误
return isNaN(margin) || !isFinite(margin) ? 0 : margin;
效果验证
某SKU数据:sales=12,500元,cost=8,750元 → profit_margin = (12500-8750)/12500 = 0.3000(即30%)
? 进阶技巧
可进一步添加“利润等级”字段,实现:
if ($profit_margin >= 0.4) return '高'; else if ($profit_margin >= 0.2) return '中'; else return '低';
? 场景2:客户分级标签(RFM模型简化版)
电商客户运营需将用户按活跃度、消费频次、客单价综合打标,便于分层营销。此处用“添加公式节点”实现三维度综合评分。
配置说明
- 输入源:用户行为汇总表(字段:user_id, last_visit_days, order_count, avg_order_amt)
- 输出字段:
customer_tier(文本)
// RFM简化评分:R=最近访问天数(越小越好),F=订单频次,M=客单价
const R_score = $last_visit_days <= 7 ? 3 : ($last_visit_days <= 30 ? 2 : 1);
const F_score = $order_count >= 5 ? 3 : ($order_count >= 2 ? 2 : 1);
const M_score = $avg_order_amt >= 500 ? 3 : ($avg_order_amt >= 200 ? 2 : 1);
const total_score = R_score + F_score + M_score;
if (total_score >= 8) return 'VIP';
else if (total_score >= 6) return '重要客户';
else if (total_score >= 4) return '普通客户';
else return '潜力客户';
实际应用
某用户数据:last_visit_days=5, order_count=3, avg_order_amt=320 → R=2, F=2, M=2 → 总分6 → 标签“重要客户”
? 场景3:订单状态智能映射
客服系统需将技术性订单状态(如:PAID、SHIPPED)转换为用户友好型文案(如:“已付款”、“已发货”),提升体验。
// 使用switch语句映射状态码
switch ($status_code) {
case 'PAID': return '已付款';
case 'SHIPPED': return '已发货';
case 'DELIVERED': return '已签收';
case 'CANCELLED': return '已取消';
case 'REFUNDED': return '已退款';
default: return '状态异常';
}
该节点可集成于数据清洗流程,确保前端展示的始终是业务语言,而非技术字段。
? 场景4:时间特征提取(工作日/周末判断)
物流分析需区分工作日与非工作日订单量,评估真实业务波动。
// 将时间字段转换为Date对象
const orderDate = new Date($order_time);
const dayOfWeek = orderDate.getDay(); // 0=周日, 1=周一, ..., 6=周六
return (dayOfWeek >= 1 && dayOfWeek <= 5) ? '工作日' : '非工作日';
结果字段可用于构建双轴图表:左侧柱状图(订单量)、右侧折线图(工作日占比),直观呈现业务节奏。
? 场景5:字符串标准化(统一邮箱格式)
用户注册数据中,邮箱存在大小写混用、多余空格等问题,影响去重与统计。
// 去除首尾空格 + 转小写 + 移除所有空格
let email = $email.trim().toLowerCase();
email = email.replace(/s+/g, ''); // 移除所有空格
// 验证邮箱格式(可选)
return /^[^s@]+@[^s@]+.[^s@]+$/.test(email) ? email : null;
? 数据质量提示
建议将此类清洗节点前置,确保后续分析基于干净数据。可配合“异常值检测节点”构建数据质量监控闭环。