AI_MASK

概述

AI_MASK
AI_MASK
是云器 Lakehouse 提供的 AI 数据脱敏函数,可从输入文本中识别并脱敏指定类型的敏感信息(PII),用统一的
[MASKED]
[MASKED]
占位符替代。支持中文、英文、日文等多语言,标签由用户自定义,一行 SQL 即可完成 PII 脱敏。

云器将 AI 计算下沉至存储层与执行引擎,数据在平台内部即可完成智能处理,无需流转至外部环境,在保障数据安全的同时大幅降低任务延迟。

语法

AI_MASK( <model>, <content>, <labels> )

参数说明

必需参数

model
model

指定用于脱敏的模型,支持两种来源:

来源一:API Gateway Endpoint(推荐)

平台管理员在 API Gateway 中预先配置模型服务,普通用户通过

endpoint:
endpoint:
前缀引用,无需关心底层连接细节。

'endpoint:<endpoint名称>' -- 示例 'endpoint:qwen3-max-preview' 'endpoint:qwen3.5-plus'

来源二:API Connection 连接对象

用户通过

CREATE API CONNECTION
CREATE API CONNECTION
自行创建连接对象,适用于需要自定义服务地址、认证密钥或对接私有化部署模型的场景。

-- 创建连接对象 CREATE API CONNECTION conn_bailian TYPE ai_function PROVIDER = 'bailian' BASE_URL = 'https://dashscope.aliyuncs.com/api/v1' API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxxxx'; -- 引用时使用 <连接名称>:<模型名称> 格式 SELECT AI_MASK('conn_bailian:qwen3.5-plus', '用户王小明,手机号:13800138000', ARRAY('姓名', '手机号'));

CREATE API CONNECTION
CREATE API CONNECTION
各字段说明:

字段说明
TYPE
TYPE
固定为
ai_function
ai_function
PROVIDER
PROVIDER
模型供应商标识,如
'bailian'
'bailian'
'openai'
'openai'
'anthropic'
'anthropic'
BASE_URL
BASE_URL
模型服务的 API 基础地址
API_KEY
API_KEY
调用服务所需的认证密钥

content
content

包含待脱敏敏感信息的输入文本,类型为 STRING(CHAR/VARCHAR/STRING 均可)。支持中文、英文、日文等多种语言,无需手动指定语言,模型自动识别。

labels
labels

需要脱敏的标签数组,类型为 ARRAY(STRING)。标签由用户自定义,模型根据标签的语义含义在文本中识别对应信息。数组中的标签数量须在 1~20 之间。

ARRAY('姓名', '手机号', '邮箱') ARRAY('person', 'email', 'SSN')

返回值

STRING 类型。返回输入文本,其中被识别为指定标签对应的敏感信息均替换为

[MASKED]
[MASKED]
。若文本中不包含指定标签对应的信息,返回原文不变。

错误行为

默认情况下,若函数无法处理输入,返回

NULL
NULL
,不报错。在多行查询中,出错的行返回
NULL
NULL
,不影响其他行的正常执行。

labels
labels
数组为空(
ARRAY()
ARRAY()
)时,函数报错:
labels must contain at least 1 label
labels must contain at least 1 label

使用说明

  • content 为 NULL 返回 NULL
    content
    content
    NULL
    NULL
    时,函数返回
    NULL
    NULL
    ,不报错。
  • content 为空字符串返回空字符串
    content
    content
    ''
    ''
    时,函数返回
    ''
    ''
    ,不报错。
  • 无匹配时返回原文:文本中不包含
    labels
    labels
    指定类型的信息时,返回原文不变,不报错。
  • labels 不能为空数组
    ARRAY()
    ARRAY()
    会触发报错,至少需要提供 1 个标签。
  • 标签越具体越精准:使用"身份证号"比"证件"更精确,使用"手机号"比"号码"更准确。
  • 标签语言与文本语言匹配效果更佳:中文文本配中文标签(如"姓名"、"手机号"),英文文本配英文标签(如"person"、"phone")。
  • 先过滤再脱敏:对大表使用时,先用
    WHERE content IS NOT NULL
    WHERE content IS NOT NULL
    过滤空值,减少不必要的模型调用。
  • 结果具有非确定性:基于 LLM 的脱敏结果可能因模型版本或调用时机略有差异。合规要求严格的场景建议对脱敏结果进行人工抽检。
  • 与其他 AI 函数配合:可先脱敏再做情感分析或摘要,确保下游分析不暴露敏感信息。

示例

中文 PII 脱敏

SELECT AI_MASK( 'endpoint:qwen3-max-preview', '用户王小明,手机号:13800138000,邮箱:wang@example.com', ARRAY('姓名', '手机号', '邮箱') ) AS masked; -- 返回:用户[MASKED],手机号:[MASKED],邮箱:[MASKED]

英文 PII 脱敏

SELECT AI_MASK( 'endpoint:qwen3-max-preview', 'John Doe, email: john.doe@example.com', ARRAY('person', 'email') ) AS masked; -- 返回:[MASKED], email: [MASKED]

多类型同时脱敏

SELECT AI_MASK( 'endpoint:qwen3-max-preview', '张三,男,28岁,电话13800138000,邮箱zhangsan@qq.com,住址北京市朝阳区建国路88号。', ARRAY('姓名', '电话', '邮箱', '住址') ) AS masked; -- 返回:[MASKED],男,28岁,电话[MASKED],邮箱[MASKED],住址[MASKED]。

日文 PII 脱敏

SELECT AI_MASK( 'endpoint:qwen3-max-preview', '田中太郎、電話番号:090-1234-5678、メール:tanaka@example.jp', ARRAY('名前', '電話番号', 'メール') ) AS masked; -- 返回:[MASKED]、電話番号:[MASKED]、メール:[MASKED]

批量脱敏表数据

SELECT id, AI_MASK( 'endpoint:qwen3-max-preview', customer_info, ARRAY('姓名', '身份证', '手机号', '地址') ) AS masked_info FROM customer_records WHERE customer_info IS NOT NULL;

脱敏后做情感分析

SELECT id, AI_MASK('endpoint:qwen3-max-preview', content, ARRAY('姓名', '电话', '邮箱') ) AS masked_content, AI_SENTIMENT('endpoint:qwen3-max-preview', content) AS sentiment FROM customer_feedback WHERE content IS NOT NULL;

合规数据导出

CREATE TABLE masked_feedback AS SELECT id, AI_MASK('endpoint:qwen3-max-preview', content, ARRAY('姓名', '电话', '邮箱', '地址') ) AS masked_content FROM customer_feedback;

限制说明

  • labels 不能为空数组
    ARRAY()
    ARRAY()
    会报错
    labels must contain at least 1 label
    labels must contain at least 1 label
    ,至少需要 1 个标签。
  • labels 数量上限为 20:单次调用最多支持 20 个标签。
  • 占位符统一为
    [MASKED]
    [MASKED]
    :所有被脱敏的信息均替换为相同占位符,不区分脱敏类型。
  • 不支持仅检测模式:函数直接返回脱敏后文本,不支持仅返回敏感信息位置或类型的检测模式。
  • 输入长度受模型限制:输入文本长度受底层模型 context window 限制。
  • 需要已配置的 Endpoint 或 API Connection:model 参数必须引用平台中已存在的 Endpoint 或 API Connection,格式错误或引用不存在的资源会报错。
  • 结果不保证 100% 覆盖:AI 脱敏基于 LLM,可能存在漏脱或误脱,合规场景建议人工抽检。
联系我们
预约咨询
微信咨询
电话咨询