字段高级设置

在字段配置页面中,上方有「高级」选项,可以对已接入数据的内容做 SQL 逻辑转化。

作用

在「高级」选项中编写的 SQL 逻辑,会直接作用于最终生成的 SQL 中。

支持的 SQL 逻辑

SQL 逻辑说明
if(a, b, c)条件判断:当 a 成立时返回 b,否则返回 c
case when a then b else c end条件分支:当 a 成立时返回 b,否则返回 c
cast(a as string | int)类型转换:将 a 转换为 string、int 等目标类型

以上 SQL 逻辑仅为示例,更多 SQL 逻辑同样可直接作用于最终生成的 SQL 中。

简单案例

以「类型转换」为例:假设事件表中 amount(金额)字段在数据源里以字符串形式存储(如 "123.45"),直接对其做 SUM()、AVG() 等聚合会出错。在字段的「高级」配置中编写:

cast(amount as double)

配置后,系统在生成 SQL 时会把原来的 amount 替换为 cast(amount as double),聚合即可正常进行。

新增虚拟列

很多时候,即便数据库中没有相关列,假设业务需要一列标签进行分析,也可以在模型中新增一列,并为其配置 SQL 逻辑。配置完成后,模型层面和数据层面都能通过系统直接以该逻辑补足,无需在数据库中实际创建该列。

以时间字段为例:数据源中 pay_month 存的是 202010 这样的字符串,无法直接用于时间聚合。新增一个虚拟列并为其配置转换逻辑:

STR_TO_DATE(CONCAT(pay_month, '01000000'), '%Y%m%d%H%i%s')

配置后,系统在生成 SQL 时会把该列替换为上面的表达式,等价于凭空「捏」出一个 YYYY-MM-DD HH:mm:ss 格式的时间戳列,无需改动数据库。更多时间格式的转换写法见 时间戳类型。