You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Azure Synapse无服务器SQL池用CETAS创建外部表时添加自增列

在无服务器SQL Pool中为外部表添加自增列的可行方法

因为无服务器SQL Pool不支持IDENTITY属性,下面提供几种在创建外部表时添加自增/唯一ID列的实用方法:

方法1:用ROW_NUMBER()生成连续自增ID

这是最常用的方式,通过窗口函数给每行分配连续的整数ID。注意:如果源数据有变动,重新生成表时ID会重新计算。

修改后的创建代码:

CREATE EXTERNAL TABLE temp.example_table
WITH 
(
    DATA_SOURCE = data_source_name,
    LOCATION = 'TempTables/example_table',
    FILE_FORMAT = parquet_file_format
)
AS 
SELECT  ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS id  -- 按任意顺序生成自增ID,要按特定字段排序就把(SELECT NULL)换成对应列名,比如user_code
     , name AS user_name
     , code AS user_code
  FROM schema.example_table

方法2:基于唯一业务字段生成稳定ID

如果需要ID保持固定(即使重新生成表也不变),可以利用表中的唯一业务字段(比如假设code是唯一的)生成哈希ID:

CREATE EXTERNAL TABLE temp.example_table
WITH 
(
    DATA_SOURCE = data_source_name,
    LOCATION = 'TempTables/example_table',
    FILE_FORMAT = parquet_file_format
)
AS 
SELECT  CONVERT(BIGINT, HASHBYTES('SHA2_256', code)) AS id  -- 基于code生成固定唯一ID
     , name AS user_name
     , code AS user_code
  FROM schema.example_table

注意:必须确保用来生成哈希的字段是唯一的,否则会出现重复ID。

方法3:生成随机唯一ID

如果不需要连续ID,只要每行唯一就行,可以用NEWID()结合CHECKSUM生成随机整数ID:

CREATE EXTERNAL TABLE temp.example_table
WITH 
(
    DATA_SOURCE = data_source_name,
    LOCATION = 'TempTables/example_table',
    FILE_FORMAT = parquet_file_format
)
AS 
SELECT  CHECKSUM(NEWID()) AS id  -- 生成随机唯一ID,每次重建表ID会变化
     , name AS user_name
     , code AS user_code
  FROM schema.example_table

内容的提问来源于stack exchange,提问作者Indrajeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:24:12