配置虚拟列
虚拟列用于在不修改底层表结构的情况下,为 Analytics Agent 增加一个更适合自然语言问答的派生字段。它可以把复杂表达式、字段拼接、业务标签或格式标准化逻辑封装成一个可理解的字段。
虚拟列不是 Lakehouse 物理表字段,而是分析域中的语义增强配置。创建后,应像普通字段一样继续补充别名、描述、字段类型和字段用途。
为什么需要虚拟列
底层数据表中的字段经常不完全符合业务用户的提问方式。例如:
| 现有字段 | 用户想问的字段 | 虚拟列价值 |
|---|---|---|
、 | 姓名、客户姓名 | 拼接成完整姓名。 |
| 账户状态 | 转换成“活跃/非活跃”标签。 |
、 | 地理位置 | 拼接或派生成位置字段。 |
| 多个状态字段 | 业务状态 | 通过 CASE WHEN 生成更清晰的业务状态。 |
如果不创建虚拟列,模型每次都需要临时推断表达式,容易产生不一致 SQL。虚拟列可以把常用表达式固定下来。
适用场景
| 场景 | 示例 |
|---|---|
| 字段拼接 | 拼接 和 得到完整姓名。 |
| 业务标签 | 根据 生成“活跃账户/非活跃账户”。 |
| 状态归一化 | 把多个状态码转换成统一业务状态。 |
| 格式标准化 | 统一大小写、去除空格、处理空值。 |
| 时间派生 | 从时间戳中提取日期、月份、年份。 |
| 复杂表达式复用 | 将经常使用的 CASE WHEN 或计算表达式封装为字段。 |
虚拟列尤其适合“用户经常问,但底层没有直接字段”的场景。
配置入口
进入虚拟列配置的一般路径:
- 进入 管理 -> 分析域管理。
- 打开目标分析域。
- 进入 数据 页签。
- 点击 表。
- 点击表展示名,进入表详情。
- 在 表结构 中新增或配置虚拟列。
不同页面版本的入口名称可能略有差异,但虚拟列通常出现在表字段配置区域。
实操验证案例
实际验证中,在账户表中创建了一个虚拟列,用于拼接姓名:
运行验证后,返回了类似结果:
Macy KubKim Cormier
保存后,该字段在表结构中显示为虚拟列。
这个案例说明:
- 虚拟列表达式需要先运行验证。
- 验证结果应检查样例值是否符合预期。
- 保存后还需要补充字段语义配置,否则模型不一定知道它代表“完整姓名”。
常见写法
字段拼接
适合生成姓名、地区层级、编码加名称等字段。
空值处理
适合把空值转换成业务用户可理解的默认值。
分类标签
适合把布尔值或状态码转换成业务标签。
时间派生
适合生成月份、季度、年份等时间维度。
数值分层
适合生成客户分层、金额分层、风险等级等业务维度。
配置后必须补字段语义
虚拟列创建成功后,只是增加了一个派生字段。要让 Analytics Agent 正确使用它,还需要配置字段语义。
| 配置项 | 建议 |
|---|---|
| 字段别名 | 写用户会说的业务名称,例如“客户姓名”“账户状态”“客户分层”。 |
| 字段描述 | 说明虚拟列如何计算、适合什么问题。 |
| 字段类型 | 根据结果选择分类、连续值、时间或其他类型。 |
| 字段用途 | 判断它适合做维度、过滤还是度量。 |
| 隐藏状态 | 如果只是中间字段,不希望用户直接使用,可以隐藏。 |
例如,姓名拼接虚拟列可配置为:
| 配置项 | 示例 |
|---|---|
| 字段别名 | 客户姓名、完整姓名 |
| 字段描述 | 由 和 拼接得到,用于展示或按姓名查询账户。 |
| 字段类型 | |
| 字段用途 | 、 |
与字段语义的关系
虚拟列和字段语义应配合使用。
| 虚拟列解决 | 字段语义解决 |
|---|---|
| 底层没有现成字段 | 这个字段在业务上叫什么 |
| 表达式需要复用 | 用户会怎么问 |
| 需要标准化取值 | 字段适合做过滤、维度还是度量 |
| 需要派生标签 | 字段是否应该被问答使用 |
如果只创建虚拟列,不配置语义,系统可能仍然无法稳定使用它。
与答案构建器的区别
虚拟列和答案构建器都能封装逻辑,但适用层级不同。
| 对比项 | 虚拟列 | 答案构建器 |
|---|---|---|
| 作用对象 | 单个字段 | 一段 SQL 模板 |
| 典型用途 | 派生字段、标签、拼接、标准化 | 多指标、JOIN、复杂口径、明细查询 |
| 是否参与表结构 | 会作为字段出现在表结构中 | 作为独立分析模板存在 |
| 问答使用方式 | 像普通字段一样被选择 | 作为可执行指标模板被调用 |
简单判断:
- 如果只是“需要一个更好用的字段”,用虚拟列。
- 如果是“需要一整套查询逻辑”,用答案构建器。
设计建议
1. 虚拟列应表达稳定业务含义
不要为一次性问题创建虚拟列。虚拟列适合稳定、复用频率高的字段。
推荐:
- 完整姓名
- 账户状态
- 客户分层
- 月份
- 地区层级
不推荐:
- 临时筛选条件
- 一次性分析表达式
- 与现有字段重复但没有更清晰语义的字段
2. 避免虚拟列过度嵌套
虚拟列表达式应保持清晰。如果逻辑过长、涉及多表或多个复杂聚合,应该考虑答案构建器,而不是虚拟列。
3. 注意空值和数据类型
创建虚拟列时应考虑:
- 输入字段是否可能为空。
- 字符串拼接是否会产生多余空格。
- CASE WHEN 是否覆盖所有分支。
- 输出类型是否符合预期。
4. 不要把敏感字段拼接成更易暴露的字段
如果底层字段包含手机号、邮箱、身份证等敏感信息,不应通过虚拟列把它们组合成更易被问答展示的字段。必要时应隐藏相关字段。
验证方法
虚拟列配置后,建议验证三件事:
| 验证项 | 方法 |
|---|---|
| 表达式是否正确 | 运行验证,看样例结果。 |
| 字段语义是否生效 | 用自然语言提问,看系统是否使用虚拟列。 |
| SQL 是否符合预期 | 查看问答结果中的 SQL。 |
示例验证问题:
- “展示几个客户姓名”
- “按账户状态统计账户数”
- “按客户分层查看活跃率”
- “最近每个月新增账户数”
如果 SQL 没有使用虚拟列,通常需要检查别名、描述、字段类型和字段用途是否配置完整。
常见问题
| 问题 | 可能原因 | 处理建议 |
|---|---|---|
| 虚拟列验证失败 | SQL 表达式语法错误或字段名错误 | 按底层数据源 SQL 语法修改表达式。 |
| 虚拟列结果为空 | 输入字段为空或表达式没有处理空值 | 使用 等函数处理空值。 |
| 问答不用虚拟列 | 缺少别名、描述或字段用途 | 补充字段语义后重新验证。 |
| 虚拟列出现在不合适的分组中 | 字段用途配置不合理 | 调整为过滤、度量或隐藏。 |
| 表达式过于复杂难维护 | 虚拟列承担了查询模板职责 | 改用答案构建器。 |
| 暴露了敏感信息 | 虚拟列拼接了敏感字段 | 隐藏字段或删除虚拟列,并检查权限配置。 |
上线前检查清单
- 虚拟列表达式是否运行验证成功。
- 样例结果是否符合业务预期。
- 是否处理了空值。
- 是否设置了业务化别名。
- 是否补充了字段描述。
- 字段类型是否正确。
- 字段用途是否合理。
- 是否会暴露敏感信息。
- 是否用自然语言问题验证。
- 是否查看 SQL 确认虚拟列被正确使用。
虚拟列的目标,是把底层表中”不方便用户直接理解或使用的表达式”变成 Analytics Agent 可以稳定理解的业务字段。
