Use colunas IDENTITY em Fabric Data Warehouse

Aplica-se a:✅Armazém de dados no Microsoft Fabric

Este tutorial explica como usar colunas IDENTITY em Fabric Data Warehouse para criar e gerenciar chaves substitutas. Você aprende a 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 do Warehouse em um espaço de trabalho com permissões de Contribuidor ou superiores.
  • Uma ferramenta de consulta. Este tutorial usa o editor de consultas SQL no portal Microsoft Fabric, mas você pode usar qualquer ferramenta de consulta T-SQL.
  • Um entendimento básico de T-SQL.

O que é uma coluna IDENTITY?

Uma IDENTITY coluna é uma coluna numérica que gera automaticamente valores exclusivos para novas linhas. Esse comportamento o torna ideal para implementar chaves substitutas porque cada linha recebe um identificador único sem necessidade de entrada manual.

Criar uma coluna IDENTITY

Para definir uma coluna IDENTITY, especifique a palavra-chave IDENTITY na definição de 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
);

Criar uma tabela com uma coluna IDENTITY

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

  1. Definir 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. Ao usar COPY INTO com uma coluna IDENTITY, forneça a lista de colunas e mapeie-a para as colunas nos 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 tela dos resultados da consulta mostrando uma tabela com as primeiras 10 linhas de um conjunto de dados de corrida de táxi.

    Importante

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

  4. Use INSERT INTO para ingerir 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. Ao fornecer um deles, especifique os nomes de todas as colunas para as quais você informa dados de entrada, exceto a coluna IDENTITY:

     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. Revise 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 tela de uma tabela com duas linhas e seis colunas mostrando dados de viagem de táxi.

Insira valores explícitos com IDENTITY_INSERT

Você pode precisar inserir valores específicos em uma coluna de identidade durante a migração de dados, ao preencher valores sentinela ou ao restaurar dados de um backup. Use SET IDENTITY_INSERT para habilitar essas inserções.

Nesta seção, você 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 as fileiras normais. 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, re-semeie a 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 do tutorial

Opcionalmente, deixe as tabelas criadas durante este tutorial:

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