适用于: check marked yes Databricks SQL check marked yes Databricks Runtime

标识 Azure Databricks 中的不同类型的对象。

以下限制适用于 Unity Catalog 中的所有对象名称:

  • 对象名称不能超过 255 个字符。
  • 不允许使用以下特殊字符:
    • 句点 ( . )
    • 空格 ( )
    • 正斜杠 ( / )
    • 所有 ASCII 控制字符(00-1F 十六进制)
    • DELETE 字符(7F 十六进制)
    • Unity Catalog 将所有对象名称存储为小写。
    • 在 SQL 中引用 UC 名称时,必须使用反引号来转义包含特殊字符的名称,例如连字符 ( - )。
    • 列名称可以使用特殊字符,但如果使用了特殊字符,则必须在所有 SQL 语句中使用反引号对名称进行转义。 Unity Catalog 保留列名大小写,但对 Unity Catalog 表的查询不区分大小写。

      标识外部连接。 外部连接充当外部系统的链接(例如 PostgreSQL ),然后可用于引用其目录、架构和表。

      connection_identifier
      

      parameters

    • connection_identifier:唯一标识连接的标识符。
    • > CREATE CONNECTION my_postgresql ...;
      

      标识目录。 目录提供对象的分组,这些对象可以进一步细分为架构。

      catalog_identifier
      
    • catalog_identifier:唯一标识目录的标识符。
    • > USE CATALOG hive_metastore;
      > CREATE CATALOG mycatalog;
      

      标识架构。 架构在目录中提供对象的分组。

      { [ catalog_name . ] schema_identifier |
        IDENTIFIER clause }
      
    • catalog_name:现有目录的名称。
    • schema_identifier:唯一标识架构的标识符。
    • IDENTIFIER 子句:将常量 STRING 映射为架构名称。
    • > USE SCHEMA default;
      > CREATE SCHEMA my_sc;
      

      数据库名称

      架构名称的同义词。

      虽然使用 SCHEMADATABASE 是可互换的,但最好使用 SCHEMA

      标识一个表对象。 该表可以使用架构名称进行限定,或使用简单标识符来进行取消限定。

      { [ schema_name . ] table_identifier [ temporal_spec ] |
        IDENTIFIER clause [ temporal_spec ] |
        { file_format | `file_format` } . `path_to_table` [ temporal_spec ] [ credential_spec ] }
      temporal_spec
        @ timestamp_encoding |
        @V version |
        [ FOR ] { SYSTEM_TIMESTAMP | TIMESTAMP } AS OF timestamp_expression |
        [ FOR ] { SYSTEM_VERSION | VERSION } AS OF version
      credential_spec
        WITH ( CREDENTIAL credential_name )
      
    • schema_name:包含表的限定或非限定架构名称。

    • table_identifier:指定表或 table_alias 的名称的标识符。

    • file_formatjsoncsvavroparquetorcbinaryFiletextdelta 之一(不区分大小写)。

    • path_to_table:表在文件系统中的位置。 必须具有 ANY_FILE 权限才能使用此语法。

    • IDENTIFIER 字句:将常量 STRING 映射为表名称。

    • temporal_spec:在使用时,在指定时间点或按指定版本引用 Delta 表。

      只能在查询MERGE USING 的上下文中使用时间规范。

    • @ timestamp_encoding:用 yyyyMMddHHmmssSSS 格式对时间戳进行编码的正 Bigint 文本。
    • @V 版本:标识 Delta 表版本的正整数文本。
    • timestamp_expression:计算结果为 TIMESTAMP 的简单表达式timestamp_expressiom 必须是常量表达式,但可以包含 current_date()current_timestamp()
    • 版本:标识 Delta 表版本的整数文本或字符串文本。
    • credential_spec

      可以使用适用的凭据来获取对未嵌入path_to_table外部位置 的访问权限。

    • credential_name

      用于访问存储位置的凭据的名称。

      如果名称未限定并且未引用已知的表别名,则 Azure Databricks 首先尝试解析当前架构中的表。

      如果名称由架构限定,Azure Databricks 将尝试解析当前目录中的表。

      有关名称解析的详细信息,请参阅 表和视图解析

      如果对不属于 Delta Lake 格式的表使用 temporal_spec,Azure Databricks 将引发错误。

      `Employees`
      employees
      hr.employees
      `hr`.`employees`
      hive_metastore.default.tab
      system.information_schema.columns
      delta.`somedir/delta_table`
      `csv`.`spreadsheets/data.csv`
      `csv`.`spreadsheets/data.csv` WITH (CREDENTIAL some_credential)
      

      标识视图。 该视图可以使用架构名称进行限定,或使用简单标识符来进行取消限定。

      { [ schema_name . ] view_identifier |
        IDENTIFIER clause }
      
    • schema_name:包含视图的架构的限定名称或非限定名称。
    • view_identifier :指定视图名称的标识符或 CTE 的视图标识符。
    • IDENTIFIER 子句:将常量 STRING 映射为视图名称。
    • `items`
      items
      hr.items
      `hr`.`items`
      

      标识表或视图中的列。 该列可以使用表或视图名称进行限定,或使用简单标识符来进行非限定 。

      { [ { table_name | view_name } . ] column_identifier |
        IDENTIFIER clause }
      
    • table_name :包含列的表的限定或非限定表名。
    • view_name :包含列的视图的限定或非限定视图名称。
    • column_identifier :指定列名称的标识符。
    • IDENTIFIER 子句:将常量 STRING 映射为列名称。
    • 标识的列必须位于表或视图中。

      Azure Databricks 支持特殊的 _metadata 列。 此 struct 类型的伪列是每个表的一部分,可以用于检索关于表中行的元数据信息。

      如果表架构包含名为 _metadata 的列,则查询将从数据源返回该列,而不是文件元数据。 _metadata 伪列将不可访问。

      -- An unqualified column name
      > SELECT c1 FROM VALUES(1) AS T(c1);
      -- A qualified column name
      > SELECT T.c1 FROM VALUES(1) AS T(c1);
      -- Using _matadata to retrieve infromation about rows retrieved from T.
      > CREATE TABLE T(c1 INT);
      > INSERT INTO T VALUES(1);
      > SELECT T._metadata.file_size;
      

      标识 struct 内的字段。 该字段必须限定为包含该字段的结构的路径。

      { expr { . field_identifier [. ...] } |
        IDENTIFIER clause }
      

      parameters

    • expr:struct 类型的表达式。
    • field_identifier:指定字段名称的标识符。
    • IDENTIFIER 子句:将常量 STRING 映射为字段名称。
    • 可以通过沿根 struct 的路径指定字段标识符来引用深度嵌套的字段。

      > SELECT addr.address.name
          FROM VALUES (named_struct('address', named_struct('number', 5, 'name', 'Main St'),
                                    'city', 'Springfield')) as t(addr);
        Main St
      

      标识临时(会话)变量。 该变量可以使用架构名称(system.sessionsession)进行限定,或使用简单标识符进行取消限定

      { [ schema_name . ] variable_identifier |
        IDENTIFIER clause }
      

      parameters

    • schema_name:包含所有临时变量的 system.sessionsession
    • variable_identifier:一个指定变量名称的标识符。
    • `session`.myvar
      myvar
      system.session.`myvar`
      

      标识一个函数。 该函数可以使用架构名称进行限定,或使用简单标识符来进行取消限定。

      { [ schema_name . ] function_identifier |
        IDENTIFIER clause }
      
    • schema_name:包含函数的架构的限定名称或非限定名称。
    • function_identifier :指定函数名称的标识符。
    • IDENTIFIER 子句:将常量 STRING 映射为函数名称。
    • `math`.myplus
      myplus
      math.`myplus`
      

      标识 SQL 用户定义的函数 (SQL UDF) 主体中的参数。 该函数可以使用函数标识符进行限定,或使用简单标识符来进行取消限定。

      [ function_identifier . ] parameter_identifier
      
    • function_identifier:指定函数名称的标识符。
    • parameter_identifier:指定参数名称的标识符。
    • CREATE FUNCTION area(x INT, y INT) RETURNS INT
      RETURN area.x + y;
      

      为表引用、查询、表函数或其他形式的关系标记。

      [ AS ] table_identifier [ ( column_identifier1 [, ...] ) ]
      
    • table_identifier :指定表名称的标识符。
    • column_identifierN :指定列名称的可选标识符。
    • 如果提供列标识符,则它们的编号必须与匹配关系中的列数匹配。

      如果不提供列标识符,它们的名称将从标记关系继承。

      > SELECT a, b FROM VALUES (1, 2) AS t(a, b);
      > DELETE FROM emp AS e WHERE e.c1 = 5;
      

      SELECT 列表中标记表达式的结果以供参考。

      如果表达式是表值生成器函数,则别名标记生成列的列表。

      [AS] column_identifier
      
      [AS] ( column_identifier [, ...] )
      
    • column_identifier :指定列名称的标识符。
    • 尽管列别名在选择列表中不需要是唯一,但需要唯一性来通过名称引用别名。

      > SELECT 1 AS a;
      > SELECT 1 a, 2 b;
      > SELECT 1 AS `a`;
      > SELECT posexplode(array(2)) AS (i, a);
      > SELECT a + a FROM (SELECT 1 AS a);
      

      标识用于访问外部位置存储的凭据。

      credential_identifier
      
    • credential_identifier:唯一标识凭据的非限定标识符。
    • 标识外部存储位置。

      location_identifier
      
    • location_identifier:唯一标识位置的非限定标识符。
    • `s3-json-data`
      s3_json_data
      

      标识用于访问提供程序共享的数据的共享。

      share_identifier
      
    • share_identifier:唯一标识共享的非限定标识符。
    • `public info`
      `public-info`
      public_info
      

      提供程序名称

      标识增量共享提供程序。

      provider_identifier
      
    • provider_identifier

      唯一标识提供商的非限定标识符。

      `Good Corp`
      `Good-corp`
      Good_Corp
      

      收件人姓名

      标识共享的收件人。

      recipient_identifier
      
    • recipient_identifier:唯一标识收件人的非限定标识符。
    • `Good Corp`
      `Good-corp`
      Good_Corp
      

      标识 Unity Catalog 卷。 该卷可以使用架构名称进行限定,或使用简单标识符来进行取消限定。

      [ schema_name .] volume_identifier
      

      parameters

    • schema_name:一个包含该卷的限定或非限定架构名称。
    • volume_identifier:架构内唯一标识该卷的非限定标识符。
    • `myVolume`
      `my volume`
      myschema.myVolume
      my_unity_catalog.my_schema.my_volume
      
    • IDENTIFIER 子句
    • 文件元数据列
  •