Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:✅ Хранилище данных в Microsoft Fabric
В этом учебном пособии объясняется, как использовать столбцы IDENTITY в Fabric Data Warehouse для создания и управления суррогатными ключами. Вы учитесь, как создавать таблицы с столбцами идентичности, вставлять данные, вставлять явные значения с IDENTITY_INSERT, и пересеять диапазон идентичности с помощью DBCC CHECKIDENT.
Предпосылки
- Доступ к элементу Warehouse в рабочем пространстве с правами автора или выше.
- Инструмент для запросов. В этом учебном пособии используется редактор запросов SQL в портале Microsoft Fabric, но вы можете использовать любой инструмент запросов T-SQL.
- Базовое понимание T-SQL.
Что такое столбец IDENTITY?
Столбец IDENTITY — это числовой столбец, который автоматически создает уникальные значения для новых строк. Такое поведение делает его идеальным для реализации суррогатных ключей, поскольку каждая строка получает уникальный идентификатор без ручного ввода.
Создание столбца IDENTITY
Для определения IDENTITY столбца укажите IDENTITY ключевое слово в определении столбца CREATE TABLE синтаксиса T-SQL:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ],
-- Other columns here
);
Создание таблицы со столбцом IDENTITY
В этом уроке вы создаёте более простую версию Trip таблицы из открытого набора данных NY Taxi и добавляете столбц TripIDIDENTITY . Каждая новая строка получает TripID уникальное значение в таблице.
Определите таблицу со столбцом
IDENTITY:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Используйте
COPY INTOдля ввода данных в таблицу. Когда вы используетеCOPY INTOсо столбцомIDENTITY, укажите список столбцов и сопоставьте его со столбцами в исходных данных.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');Просмотрите данные и значения, присвоенные столбцу
IDENTITY:SELECT TOP 10 * FROM Trip;Выход включает автоматически сгенерируемое
TripIDзначение для каждой строки.Это важно
Ваши ценности могут отличаться от значений в этой статье.
IDENTITYСтолбцы дают значения, которые гарантированно уникальны, но значения не обязательно последовательны или упорядоченные и могут возникать пробелы.Используйте
INSERT INTOдля добавления новых строк:INSERT INTO dbo.Trip VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);Список столбцов необязателен при использовании
INSERT INTO. Когда вы предоставляете его, укажите имена всех столбцов, для которых вы предоставляете входные данные, кроме столбца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);Прочитайте вставленные строки:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Просмотрите значения, назначенные новым строкам:
Вставьте явно заданные значения с помощью IDENTITY_INSERT
Возможно, потребуется вставлять определённые значения в столбец идентичности при миграции данных, при заполнении значений Sentinel или при восстановлении данных из резервной копии. Используйте SET IDENTITY_INSERT для включения этих вставок.
В этом разделе вы создаёте таблицу измерений и используете IDENTITY_INSERT для добавления служебных строк с заранее известными значениями ключей.
Создайте таблицу размеров с столбцом
IDENTITY:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Вставляйте регулярные строки. Значения идентификатора генерируются автоматически:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Включите
IDENTITY_INSERT, чтобы добавить сторожевые значения. КогдаIDENTITY_INSERTимеет значениеON, укажите список столбцов, включающий столбец идентификаторов: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;После вставки явных значений переустановите начальное значение столбца IDENTITY с помощью
DBCC CHECKIDENT, чтобы будущие автоматически создаваемые значения не конфликтовали со вставленными значениями:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Проверьте, что сторожевые строки отображаются рядом с автоматически сгенерированными строками:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;Вставьте строку и убедитесь, что автоматически сгенерируемое значение не конфликтует:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Adventure Works', 'Enterprise'); SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;
Очистка ресурсов учебных материалов
При желании удалите таблицы, созданные в этом руководстве:
DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;