Используйте столбцы IDENTITY в Fabric Data Warehouse

Применимо к:✅ Хранилище данных в 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 уникальное значение в таблице.

  1. Определите таблицу со столбцом IDENTITY :

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Используйте 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');
    
  3. Просмотрите данные и значения, присвоенные столбцу IDENTITY:

    SELECT TOP 10 *
    FROM Trip;
    

    Выход включает автоматически сгенерируемое TripID значение для каждой строки.

    Снимок экрана: результаты запроса, показывающие таблицу с первыми 10 строками набора данных о поездке на такси.

    Это важно

    Ваши ценности могут отличаться от значений в этой статье. IDENTITY Столбцы дают значения, которые гарантированно уникальны, но значения не обязательно последовательны или упорядоченные и могут возникать пробелы.

  4. Используйте INSERT INTO для добавления новых строк:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Список столбцов необязателен при использовании 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);
    
  6. Прочитайте вставленные строки:

     SELECT *
     FROM dbo.Trip
     WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';    
    

    Просмотрите значения, назначенные новым строкам:

    Скриншот таблицы с двумя строками и шестью столбцами, показывающими данные о поездках такси.

Вставьте явно заданные значения с помощью IDENTITY_INSERT

Возможно, потребуется вставлять определённые значения в столбец идентичности при миграции данных, при заполнении значений Sentinel или при восстановлении данных из резервной копии. Используйте SET IDENTITY_INSERT для включения этих вставок.

В этом разделе вы создаёте таблицу измерений и используете IDENTITY_INSERT для добавления служебных строк с заранее известными значениями ключей.

  1. Создайте таблицу размеров с столбцом IDENTITY :

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Вставляйте регулярные строки. Значения идентификатора генерируются автоматически:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Включите 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;
    
  4. После вставки явных значений переустановите начальное значение столбца IDENTITY с помощью DBCC CHECKIDENT, чтобы будущие автоматически создаваемые значения не конфликтовали со вставленными значениями:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Проверьте, что сторожевые строки отображаются рядом с автоматически сгенерированными строками:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Вставьте строку и убедитесь, что автоматически сгенерируемое значение не конфликтует:

    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;