Lakehouse 对象命名规则

在 Lakehouse 中,为了确保元数据(如数据库、表、视图、用户等)的命名一致性和可读性,避免潜在的问题,制定了一套命名规则。本文档将详细介绍这些规则,帮助你更好地理解和使用 Lakehouse。

标识符类型

Lakehouse支持以下类型的标识符命名:

  • 常规标识符:不需要引号,但必须符合特定的命名规则。
  • 双引号标识符:需要使用双引号(")包围起来,允许使用关键字作为标识符名称。默认关闭,需通过
    SET cz.sql.double.quoted.identifiers=true
    SET cz.sql.double.quoted.identifiers=true
    开启(仅会话级别)。注意:开启后双引号不再表示字符串,
    "hello"
    "hello"
    会被解析为标识符而非字符串值。
  • 反引号标识符:需要使用反引号(`)包围起来。对于列名,反引号可以包含任何字符(连字符、空格、中文、数字开头等);对于表名、schema 名等对象名,反引号只能绕过关键字限制和数字开头限制,连字符、空格、中文等特殊字符仍然不被允许。默认使用反引号,可通过设置切换为双引号(
    SET cz.sql.double.quoted.identifiers=true
    SET cz.sql.double.quoted.identifiers=true
    )。

命名规则

常规标识符的命名规范

  1. 开头字符:标识符必须以字母(包括大写A-Z、小写a-z)或下划线("_")作为起始字符。不允许以数字或其他特殊字符开始。
  2. 字符组成:标识符中只能包含字母、下划线和十进制数字(0-9)。不允许使用其他特殊字符和关键字,如连字符(-)、空格或其他非字母数字字符。
  3. 大小写敏感性:元数据在存储时会进行大小写转换。大多数对象(schema、table、view、column 等)存储时转为小写;VCluster 名称例外,存储时转为大写。在引用时不区分大小写,
    MyTable
    MyTable
    mytable
    mytable
    视为相同标识符。反引号也不能保留大小写。注意:SELECT 查询中的列别名(
    AS MyAlias
    AS MyAlias
    )保留原始大小写,不做转换。
  4. 语言限制:不支持中文字符
  5. 长度限制: 长度为1~256个字符,WORKSPACE NAME长度限制3~28个字符

以下是几个合法的标识符示例:

my_table table1 table_2

反引号标识符

反引号的作用因对象类型不同而有所区别:

对列名:反引号可以绕过所有命名限制,允许使用连字符、空格、中文、数字开头等任意字符:

CREATE TABLE my_table( `my-col` INT, `my col` STRING, `中文列` DATE, `123col` BIGINT )

对表名、schema 名等对象名:反引号只能绕过关键字限制和数字开头限制,连字符、空格、中文等特殊字符仍然不被允许:

-- 允许数字开头 CREATE SCHEMA `123`; -- 允许使用关键字作为名称 CREATE SCHEMA `select`; -- 列名使用中文(仅列名支持) CREATE TABLE my_table(`中文列` STRING);

建议只在必要时才使用反引号。

双引号标识符

开启

SET cz.sql.double.quoted.identifiers=true
SET cz.sql.double.quoted.identifiers=true
后,双引号作为标识符分隔符,兼容 SQL ANSI/ISO 标准行为。开启后需注意:

  • 双引号不再表示字符串,
    "hello"
    "hello"
    会被解析为标识符(列名/对象名)而非字符串值
  • 使用双引号创建的关键字对象,引用时必须带双引号

-- 开启双引号标识符模式 SET cz.sql.double.quoted.identifiers=true; -- 使用关键字作为 schema 名 CREATE SCHEMA "select"; -- 引用时必须带双引号 SELECT * FROM "select".my_table;

各个对象的命名规范

实例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个字符
是否支持特殊字符常规标识符不支持;反引号标识符支持连字符、空格等特殊字符
是否支持中文支持(需用反引号,如
`中文列`
`中文列`
是否有保留字有保留字
是否允许重复在当前表中不允许重复
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) ,不允许有空格
是否支持中文不支持
是否有保留字有保留字(如 USER)
是否允许重复当前 Account 下不允许重复
COMMENT命名规则以字母或中文开头
长度限制1024字符
是否支持特殊字符含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格
是否支持中文
是否区分大小写区分

INDEX

约束约束条件
名字规则命名规则以字母(AZ、az)或下划线(“_”)开头。大写字符会转成小写
长度限制长度为最大1-256个字符
是否支持特殊字符仅包含字母、下划线、十进制数字 (0-9) ,不允许有空格
是否支持中文不支持
是否有保留字有保留字
是否允许重复当前 schema 下不允许重复;索引必须与所属表在同一 schema
COMMENT命名规则以字母或中文开头
长度限制1024字符
是否支持特殊字符含字母、汉字、下划线、十进制数字 (0-9) ,允许有空格
是否支持中文
是否区分大小写区分
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询