Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Definir uma tabela com uma
IDENTITYcoluna:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Use
COPY INTOpara ingerir dados na tabela. Ao usarCOPY INTOcom uma colunaIDENTITY, 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');Visualize os dados e os valores atribuídos à
IDENTITYcoluna:SELECT TOP 10 * FROM Trip;A saída inclui o valor gerado
TripIDautomaticamente para cada linha.Importante
Seus valores podem diferir dos valores deste artigo.
IDENTITYColunas produzem valores que são garantidamente únicos, mas os valores não são necessariamente sequenciais ou ordenados, e podem ocorrer lacunas.Use
INSERT INTOpara 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);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 colunaIDENTITY: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);Revise as linhas inseridas:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Observe os valores atribuídos às novas linhas:
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.
Crie uma tabela de dimensões com uma
IDENTITYcoluna:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );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');Ative
IDENTITY_INSERTpara adicionar valores sentinela. QuandoIDENTITY_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;Após inserir valores explícitos, re-semeie a coluna de identidade com
DBCC CHECKIDENTpara garantir que os valores gerados automaticamente no futuro não colidam com os valores inseridos:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Verifique se as linhas sentinela aparecem ao lado das linhas geradas automaticamente:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;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;