적용 대상: Microsoft Fabric의✅ Warehouse
이 튜토리얼은 Fabric Data Warehouse에서 IDENTITY 열을 사용하여 대리 키를 생성하고 관리하는 방법을 설명합니다. 식별 열이 있는 테이블 생성, 데이터 삽입, 명시적 값 IDENTITY_INSERT삽입 , 그리고 식별 범위를 DBCC CHECKIDENT다시 시드 하는 방법을 배웁니다.
필수 조건
- 기여자 이상의 권한으로 작업 공간에 있는 창고 항목에 접근할 수 있습니다.
- 쿼리 도구. 이 튜토리얼은 Microsoft Fabric 포털의 SQL 쿼리 편집기를 사용하지만, 어떤 T-SQL 쿼리 도구든 사용할 수 있습니다.
- T-SQL에 대한 기본적인 이해.
IDENTITY 열이 무엇인가요?
IDENTITY 열은 새 행에 대한 고유 값을 자동으로 생성하는 숫자 열입니다. 이러한 동작 덕분에 각 행이 수동 입력 없이 고유한 식별자를 부여받기 때문에 대리 키를 구현하기에 이상적입니다.
IDENTITY 열 생성하기
열을 IDENTITY 정의하려면, T-SQL 문법의 CREATE TABLE 열 정의에서 키워드를 IDENTITY 지정하세요:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ],
-- Other columns here
);
IDENTITY 열이 있는 테이블 만들기
이 튜토리얼에서는 NY Taxi 오픈 데이터셋에서 테이블의 Trip 더 간단한 버전을 만들고 열을 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로 삽입하세요
데이터 마이그레이션 시, 센티넬 값 채우기, 백업 데이터 복원 시 특정 값을 아이덴티티 열에 삽입해야 할 수도 있습니다. SET IDENTITY_INSERT을 사용해 이 인서트를 활성화하세요.
이 섹션에서는 차원 테이블 IDENTITY_INSERT 을 만들고 잘 알려진 키 값이 있는 센티넬 행을 추가합니다.
IDENTITY열이 있는 차원 테이블을 만드세요:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );규칙적인 행을 삽입하세요. ID 값은 자동으로 생성됩니다:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');센티넬 값을 추가하려면
IDENTITY_INSERT을(를) 활성화하세요.IDENTITY_INSERT이ON일 때 ID 열을 포함하는 열 목록을 제공합니다: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;명시적 값을 삽입한 후, 식별 열
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;