Lakehouse对象命名规则
在Lakehouse中,为了确保元数据(如数据库、表、视图、用户等)的命名一致性和可读性,避免潜在的问题,我们制定了一套命名规则。本文档将详细介绍这些规则,帮助您更好地理解和使用Lakehouse。
标识符类型
Lakehouse支持以下类型的标识符命名:
- 常规标识符:不需要引号,但必须符合特定的命名规则。
- 双引号标识符:需要使用双引号(")包围起来,可以对关键字进行转译。
- 反引号标识符:需要使用反引号(`)包围起来,可以包含任何字符,但不能包含反引号本身。默认是反引号,可以通过设置切换为双引号(set
cz.sql.double.quoted.identifiers=true
)。
命名规则
常规标识符的命名规范
- 开头字符:标识符必须以字母(包括大写A-Z、小写a-z)或下划线("_")作为起始字符。不允许以数字或其他特殊字符开始。
- 字符组成:标识符中只能包含字母、下划线和十进制数字(0-9)。不允许使用其他特殊字符和关键字,如连字符(-)、空格或其他非字母数字字符。
- 大小写敏感性:虽然在创建时可以指定大小写,但元数据在存储时会被解析为小写字符。在Lakehouse中,所有对象的名称都是不区分大小写的。这意味着,"MyTable"和"mytable"会被视为相同的标识符。
- 语言限制:不支持中文字符
- 长度限制: 长度为1~256个字符,WORKSPACE NAME长度限制3~28个字符
以下是几个合法的标识符示例:
反引号标识符
如果在对象命名时加上反引号,则遵循以下规则:
- 允许用户使用关键字。
- 列名允许特殊字符中文等。
对于需要使用关键字命名的标识符名称,可以使用双引号或反引号将其包围,例如:
-- 允许数字
create schema `123`;
-- 使用关键字作为对象的命名
create schema `select`;
-- 列名使用关键字作为对象的命名
create table my_table(`中文` string)
请注意,反引号都可以用来包围标识符,但在某些情况下,它们的行为可能不同。通常,建议只在必要时才使用反引号。
双引号标识符
在SQL的ANSI/ISO标准中,双引号中的标识符(分隔标识符)允许用户使用关键字。Lakehouse也可以兼容此行为。开启后,双引号为分隔符标识符,通过设置cz.sql.double.quoted.identifiers=true
当前只支持会话级别开启。需要注意的是,如果开启双引号为分隔符标识符后,Lakehouse将不再把双引号括起来的数据认为是一个字符串类型。
注意事项
各个对象的命名规范
实例INSTANCE NAME
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 由系统生成 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写。 |
| 长度限制 | 长度为3~28个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | 无保留字 |
| 是否允许重复 | 用户lakehouse的唯一标示 |
WORKSPACE
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为3~28个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | 保留字sys |
| 是否允许重复 | 在当前实例下不允许重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 长度不能超过1024个字符, |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,允许中间有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
SCHEMA
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | 有保留字 information_schema、public |
| 是否允许重复 | 在当前WORKSPACE下不允许重复不允许和volume 重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
TABLE
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否允许重复 | 在当前schema下不允许重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
VIEW
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否允许重复 | 在当前schema下不允许重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
VIRTUAL CLUSTER
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否允许重复 | 在当前workspace不重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
COLUMN
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 支持 |
| 是否有保留字 | 有保留字 |
| 是否允许重复 | 在当前表中不允许重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
VOLUME
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | 有保留字 |
| 是否允许重复 | 在当前workspace不重复,不允许和schema重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
FUNCTION
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写,避免和内建函数重复 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | 有保留字 |
| 是否允许重复 | 允许重复,根据传入的参数区分 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
ROLE
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | 有保留角色 |
| 是否允许重复 | 允许重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
ROLE_ALIAS | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 不区分 |
USER
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | |
| 是否允许重复 | 当前Account不允许重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |
INDEX
| 约束 | 约束条件 |
---|
名字规则 | 命名规则 | 以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写 |
| 长度限制 | 长度为最大1-256个字符 |
| 是否支持特殊字符 | 仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格 |
| 是否支持中文 | 不支持 |
| 是否有保留字 | |
| 是否允许重复 | 当前schema不允许重复 |
COMMENT | 命名规则 | 以字母或中文开头 |
| 长度限制 | 1024字符 |
| 是否支持特殊字符 | 含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格 |
| 是否支持中文 | 是 |
| 是否区分大小写 | 区分 |