栏目说明
「Quick BI使用案例」系列短文都来源于用户遇到的真实问题。
文章聚焦使用过程中的高频误区与使用技巧,希望能帮助您更充分地发挥产品价值。
问题背景
在零售、电商及连锁经营场景中,精细化运营往往依赖于对订单时效性的深度洞察。除了关注销售额外,管理者亟需掌握各区域的交易活跃度。
核心需求:
企业需要快速计算并展示每个区域的以下两个关键指标:
- 最新订单时间:该区域最近一次发生交易的时间点。
- 次新订单时间:该区域倒数第二次发生交易的时间点。
业务价值:
通过对比这两个时间点,管理层可以实现:
- 活跃度监控:计算“最新”与“次新”的时间间隔,识别交易高频区与沉睡区。
- 异常预警:若某区域两笔订单间隔远超平均水平,可能预示客户流失或运营异常,需及时介入。
- 供应链优化:基于真实的下单频率分布,动态调整补货策略,降低库存积压风险。
解决方案
本方案以 MySQL 8.0 数据源为例,演示如何在 Quick BI 中利用 LOD 表达式(详细级别表达式)和聚合函数实现上述需求。
前置准备
确保数据集中包含以下字段:
[区域]:维度字段,用于分组。[订单日期]:日期字段,用于计算时间。
实施步骤
Step1. 在数据集中新建计算字段“最新时间”
利用 LOD_FIXED 函数,按“区域”粒度计算最大日期。
- 字段名称:最新时间
- 计算公式:
LOD_FIXED{[区域]: BI_MAX([订单日期])}
- 逻辑解析:
LOD_FIXED{[区域]: ...}:维度为“区域”,该字段始终返回该区域下的全局最大值。
BI_MAX([订单日期]):在该维度下取日期的最大值,即最新下单时间。
💡 技术提示:
LOD,即Level Of Detail Expressions(详细级别表达式),是一种强大的计算功能,它允许我们在数据分析中创建更复杂的计算和聚合。
LOD表达式可以在做数据分析时控制要计算的粒度,帮助用户在指定粒度级别(FIXED级别)、较高粒度级别(INCLUDE级别)、较低粒度级别(EXCLUDE级别)对数据进行分析。其中LOD_FIXED基本用法如下:
语法 |
LOD_FIXED{<维度声明> : <聚合表达式>} |
参数说明 |
|
定义 |
用于在指定的维度上计算固定的聚合值,不受图表中其他维度的影响。 |
输出 |
数值 |
示例 |
LOD_FIXED{[区域]: BI_SUM([订单金额])} 含义:单独以区域为粒度聚合,求订单金额的合计,与已有查询中的维度无关。 更多应用示例请参见FIXED函数应用。 |
使用限制 |
Lindorm(宽表引擎、多模SQL)、Elasticsearch、SAP IQ (Sybase IQ)数据源不支持。 |
Step2. 新建计算字段“次新时间”
基于上一步计算出的“最新时间”,通过条件判断排除掉最新的那一笔订单,然后在剩余订单中再次取最大值,即为“次新时间”。
- 字段名称:次新时间
- 计算公式:
BI_MAX(CASE WHEN [订单日期] < [最新时间] THEN [订单日期] ELSE BI_TODATE('1888-09-09', 'yyyy-MM-dd') END)
- 逻辑解析:
1.条件过滤:CASE WHEN [订单日期] < [最新订单时间] 筛选出所有早于“最新时间”的订单记录。
2.二次聚合:外层 BI_MAX 对过滤后的日期集合取最大值,即得到倒数第二新的时间。
💡 技术提示:
聚合函数是一种在数据分析中常用的函数,它可以对一组数据进行汇总后再进行计算。这类函数可以帮助您从大量数据中提取出有用的信息概览,如总数、平均数、最大值、最小值等。BI_MAX用于对指定维度数据求最大值。
语法 |
BI_MAX(expression) |
参数说明 |
expression:必须是非聚合函数公式返回的结果,可以是维度字段、度量字段或者用普通公式计算后的结果字段。 |
定义 |
最大值 |
输出 |
数值 |
示例 |
BI_MAX([订单金额]) 根据图表中使用的维度进行聚合,求订单金额的最大值。 |
Step 3: 报表配置与展示
1.新建一个交叉表。
2.行:拖入 [区域]和 [最新时间] 。
3.列:拖入[次新时间]。
4.交叉表中展示各个区域订单最新时间和次新时间。
如阅读后有任何问题,您可以点击Quick BI产品内右下角【帮助与反馈】按钮与我们取得联系。