Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esto se aplica a:✅ Almacén en Microsoft Fabric
Este tutorial explica cómo usar columnas IDENTITY en Fabric Data Warehouse para crear y gestionar claves sustitutas. Aprendes a crear tablas con columnas de identidad, insertar datos, insertar valores explícitos con IDENTITY_INSERT, y resembrar el rango de identidad con DBCC CHECKIDENT.
Prerrequisitos
- Acceso a un elemento de almacén en un espacio de trabajo con permisos de Contributor o superiores.
- Una herramienta de consulta. Este tutorial utiliza el editor de consultas SQL en el portal Microsoft Fabric, pero puedes usar cualquier herramienta de consulta T-SQL.
- Una comprensión básica de T-SQL.
¿Qué es una columna IDENTITY?
Una IDENTITY columna es una columna numérica que genera automáticamente valores únicos para las nuevas filas. Este comportamiento lo hace ideal para implementar claves sustitutas porque cada fila recibe un identificador único sin necesidad de entrada manual.
Creación de una columna IDENTITY
Para definir una IDENTITY columna, especifique la IDENTITY palabra clave en la definición de columna de la CREATE TABLE sintaxis de T-SQL:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ],
-- Other columns here
);
Creación de una tabla con una columna IDENTITY
En este tutorial, creas una versión más sencilla de la Trip tabla a partir del conjunto de datos abierto de NY Taxi y añades una TripIDIDENTITY columna. Cada nueva fila recibe un TripID valor único en la tabla.
Defina una tabla con una
IDENTITYcolumna:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Úsalo
COPY INTOpara ingir datos en la tabla. Cuando usesCOPY INTOcon una columnaIDENTITY, proporciona la lista de columnas y asígnala a las columnas de los datos de origen.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');Vista previa de los datos y los valores asignados a la
IDENTITYcolumna:SELECT TOP 10 * FROM Trip;La salida incluye el valor generado
TripIDautomáticamente para cada fila.Importante
Tus valores pueden diferir de los de este artículo.
IDENTITYLas columnas producen valores que garantizan ser únicos, pero los valores no son necesariamente secuenciales u ordenados, y pueden aparecer huecos.Uso
INSERT INTOpara ingerir nuevas filas:INSERT INTO dbo.Trip VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);Una lista de columnas es opcional con
INSERT INTO. Cuando proporciones uno, especifica los nombres de todas las columnas para las que proporcionas datos de entrada, excepto laIDENTITYcolumna: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);Revisa las filas insertadas:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Observe los valores asignados a las nuevas filas:
Inserta valores explícitos con IDENTITY_INSERT
Puede que necesites insertar valores específicos en una columna de identidad durante la migración de datos, al poblar valores centinela o al restaurar datos de una copia de seguridad. Utiliza SET IDENTITY_INSERT para habilitar estos insertos.
En esta sección, creas una tabla de dimensiones y la usas IDENTITY_INSERT para añadir filas centinela con valores clave bien conocidos.
Crea una tabla de dimensiones con una
IDENTITYcolumna:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Inserta filas normales. Los valores de identidad se generan automáticamente:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Active
IDENTITY_INSERTpara añadir valores centinela. CuandoIDENTITY_INSERTesON, proporciona una lista de columnas que incluye la columna identidad: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;Después de insertar valores explícitos, restablece la secuencia de la columna de identidad con
DBCC CHECKIDENTpara garantizar que los valores generados automáticamente en el futuro no entren en conflicto con los valores insertados:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Verifica que las filas centinela aparezcan junto a las filas generadas automáticamente:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;Inserta una fila y confirma que el valor generado automáticamente no entra en conflicto:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Adventure Works', 'Enterprise'); SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;
Limpiar recursos del tutorial
Opcionalmente, elimina las tablas creadas durante este tutorial:
DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;