在 Azure Storage 上创建和更改增量外部表

使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息
适用于:✅ Azure Data Explorer

本文中的命令可用于在执行命令的数据库中创建或更改增量外部表。 增量外部表引用位于 Azure Blob Storage、Azure Data Lake Store Gen1 或 Azure Data Lake Store Gen2 中的 Delta Lake 表数据。

注意

如果该表存在,则 .create 命令会失败并显示错误。 使用 .create-or-alter.alter 修改现有表。

若要加速对外部 delta 表的查询,请参阅查询加速策略

权限

若要.create至少需要 Database User 权限,.alter 至少需要 Table Admin 权限。

若要使用托管标识身份验证.create-or-alter外部表,需要AllDatabasesAdmin权限。

语法

.create | .alter | .create-or-alterexternaltableTableName [(Schema)] kind=delta(StorageConnectionString) [with(属性 [, ...])]

详细了解语法约定

参数

客户 类型 必需 说明
TableName string ✔️ 遵循实体名称规则的外部表名称。 外部表不能与同一数据库中的常规表具有相同的名称。
架构 string 可选外部数据架构是包含一个或多个列名称和数据类型的逗号分隔列表,其中的每个项遵循以下格式:ColumnName:ColumnType。 如果未指定,将会基于最新的增量表版本从增量日志自动推理该架构。
StorageConnectionString string ✔️ 增量表根文件夹路径,包括凭据。 可以指向 Azure Blob Storage blob 容器、Azure Data Lake Gen 2 文件系统或 Azure Data Lake Gen 1 容器。 外部表storage类型由提供的connection string确定。 请参阅 storage 连接字符串
属性 string 采用 PropertyName= PropertyValue 格式的键值属性对。 请参阅可选属性

注意

  • 如果提供了自定义架构,则将使用 null 值填充不存在的列或具有不兼容类型的列。
  • 从增量日志自动推理有关分区的信息。 分区列作为虚拟列添加到表架构中。 有关详细信息,请参阅 Virtual 列
  • 从分区信息自动推理路径格式。 有关详细信息,请参阅 Path 格式

提示

对于自定义架构,可以使用 infer_storage_schema 插件根据外部文件内容推断架构。

身份验证和授权

用于access外部表的身份验证方法基于创建过程中提供的connection string,access表所需的权限因身份验证方法而异。

支持的身份验证方法与 Azure Storage 外部表支持的方法相同

可选属性

属性 类型 说明
folder string 表的文件夹
docString string 用来记录表的字符串
compressed bool 仅适用于 导出方案
如果设置为 true,则以 compressionType 属性指定的格式导出数据。 对于读取路径,会自动检测压缩。
compressionType string 仅适用于 导出方案
导出文件的压缩类型。 对于非 Parquet 文件,仅允许 gzip。 对于 Parquet 文件,可能的值包括 gzipsnappylz4_rawbrotlizstd。 默认值为 gzip。 对于读取路径,会自动检测压缩类型。
namePrefix string 如果已设置,则指定文件的前缀。 在写入操作中,所有文件都将用此前缀来写入。 在读取操作中,将只读取具有此前缀的文件。
fileExtension string 如果已设置,则指定文件的扩展名。 写入时,文件名将以此后缀结尾。 读取时,将只读取具有此文件扩展名的文件。
encoding string 指定文本的编码方式:UTF8NoBOM(默认值)或 UTF8BOM
dryRun bool 如果设置了此属性,则不会保留外部表定义。 此选项对于验证外部表定义很有用,特别是在与 filesPreviewsampleUris 参数一起使用的情况下。

注意

将在创建期间访问外部增量表,以推理分区信息和可选的架构。 确保表定义有效且storage可访问。

示例

创建或更改采用推理架构的增量外部表

在以下外部表中,架构是基于最新的增量表版本自动推理出来的。

.create-or-alter external table ExternalTable  
kind=delta 
( 
   h@'https://storageaccount.blob.core.chinacloudapi.cn/container1;secretKey'
) 

创建采用自定义架构的增量外部表

在以下外部表中,指定了一个自定义架构,并且该架构替代了增量表的架构。 如果以后需要将自定义架构替换为基于最新增量表版本推理的架构,请在不指定架构的情况下运行 .alter | .create-or-alter 命令,如以上示例所示。

.create external table ExternalTable (Timestamp:datetime, x:long, s:string) 
kind=delta
( 
   h@'abfss://filesystem@storageaccount.dfs.core.chinacloudapi.cn/path;secretKey'
)

限制

  • 不支持按时间顺序查看。 仅使用最新的增量表版本。