Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
Defina 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. Quando utilizaCOPY INTOcom uma colunaIDENTITY, 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');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
Os seus valores podem diferir dos valores deste artigo.
IDENTITYAs colunas produzem valores que são garantidamente únicos, mas os valores não são necessariamente sequenciais ou ordenados, e podem ocorrer lacunas.Utilize
INSERT INTOpara 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);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 aIDENTITYcoluna: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);Reveja 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
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.
Crie uma tabela de dimensões com uma
IDENTITYcoluna:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );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');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, redefina a sequência da 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 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;