Utilizar colunas IDENTITY no Fabric Data Warehouse

Aplica-se para:✅ Armazém no Microsoft Fabric

Este tutorial explica como usar colunas IDENTITY em Fabric Data Warehouse para criar e gerir chaves substitutas. Saiba como criar tabelas com colunas de identidade, inserir dados, inserir valores explícitos com IDENTITY_INSERT e redefinir o intervalo de identidade com DBCC CHECKIDENT.

Pré-requisitos

  • Acesso a um item de armazém num espaço de trabalho com permissões de Colaborador ou superiores.
  • Uma ferramenta de consulta. Este tutorial usa o editor de consultas SQL no portal Microsoft Fabric, mas pode usar qualquer ferramenta de consulta T-SQL.
  • Uma compreensão básica de T-SQL.

O que é uma coluna de IDENTIDADE?

Uma IDENTITY coluna é uma coluna numérica que gera automaticamente valores únicos para novas linhas. Este comportamento torna-o ideal para implementar chaves substitutas porque cada linha recebe um identificador único sem necessidade de introdução manual.

Criar uma coluna IDENTIDADE

Para definir uma coluna IDENTITY, especifique a palavra-chave IDENTITY na definição da coluna da sintaxe T-SQL CREATE TABLE:

CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
    [column_name] BIGINT IDENTITY,
    [ ,... n ],
    -- Other columns here
);

Crie uma tabela com uma coluna IDENTIDADE

Neste tutorial, crias uma versão mais simples da Trip tabela a partir do conjunto de dados aberto do NY Taxi e adicionas uma TripIDIDENTITY coluna. Cada nova linha recebe um TripID valor único na tabela.

  1. Defina uma tabela com uma IDENTITY coluna:

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Use COPY INTO para ingerir dados na tabela. Quando utiliza COPY INTO com uma coluna IDENTITY, forneça a lista de colunas e faça a correspondência com as colunas dos dados de origem.

     COPY INTO dbo.Trip (tpepPickupDateTime, tpepDropoffDateTime, passengerCount, tripDistance, fareAmount, totalAmount)
     FROM 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=2013/puMonth=1/*.parquet'
     WITH( FILE_TYPE = 'PARQUET');
    
  3. Visualize os dados e os valores atribuídos à IDENTITY coluna:

    SELECT TOP 10 *
    FROM Trip;
    

    A saída inclui o valor gerado TripID automaticamente para cada linha.

    Captura de ecrã dos resultados da consulta mostrando uma tabela com as primeiras 10 linhas de um conjunto de dados de viagens de táxi.

    Importante

    Os seus valores podem diferir dos valores deste artigo. IDENTITY As colunas produzem valores que são garantidamente únicos, mas os valores não são necessariamente sequenciais ou ordenados, e podem ocorrer lacunas.

  4. Utilize INSERT INTO para importar novas linhas:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Uma lista de colunas é opcional com INSERT INTO. Quando fornecer um, especifique os nomes de todas as colunas para as quais fornece dados de entrada, exceto a IDENTITY coluna:

     INSERT INTO dbo.Trip (tpepPickupDateTime, tpepDropoffDateTime, passengerCount, tripDistance, fareAmount, totalAmount)
     VALUES ('2026-01-01T08:15:00', '2013-01-01T08:42:00', 2, 6.8, 24.5, 30.0);
    
  6. Reveja as linhas inseridas:

     SELECT *
     FROM dbo.Trip
     WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';    
    

    Observe os valores atribuídos às novas linhas:

    Captura de ecrã de uma tabela com duas linhas e seis colunas que mostram dados de viagens de táxi.

Insira valores explícitos com IDENTITY_INSERT

Pode ser necessário inserir valores específicos numa coluna de identidade durante a migração de dados, ao preencher valores sentinela ou ao restaurar dados de um backup. Utilize SET IDENTITY_INSERT para ativar estas inserções.

Nesta secção, cria uma tabela de dimensões e usa IDENTITY_INSERT para adicionar linhas sentinela com valores de chave bem conhecidos.

  1. Crie uma tabela de dimensões com uma IDENTITY coluna:

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Insira linhas regulares. Os valores de identidade são gerados automaticamente:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Ative IDENTITY_INSERT para adicionar valores sentinela. Quando IDENTITY_INSERT é ON, forneça uma lista de colunas que inclua a coluna identidade:

    SET IDENTITY_INSERT dbo.DimCustomer ON;
    
    INSERT INTO dbo.DimCustomer (CustomerKey, CustomerName, CustomerType)
    VALUES (-1, 'Unknown', 'Sentinel'),
           (-2, 'Not Applicable', 'Sentinel');
    
    SET IDENTITY_INSERT dbo.DimCustomer OFF;
    
  4. Após inserir valores explícitos, redefina a sequência da coluna de identidade com DBCC CHECKIDENT para garantir que os valores gerados automaticamente no futuro não colidam com os valores inseridos:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Verifique se as linhas sentinela aparecem ao lado das linhas geradas automaticamente:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Insira uma linha e confirme que o valor gerado automaticamente não entra em conflito:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Adventure Works', 'Enterprise');
    
    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    

Limpar recursos de tutoriais

Opcionalmente, deixa as tabelas criadas durante este tutorial:

DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;