แชร์ผ่าน


โยกย้ายไปยังคอลัมน์ IDENTITY ใน Fabric Data Warehouse

นําไปใช้กับ:✅ Warehouse ใน Microsoft Fabric

คุณสามารถโยกย้ายตารางไปยัง Fabric Data Warehouse ด้วยคอลัมน์คีย์ตัวแทนหลังจากปรับให้เข้ากับความแตกต่างใน IDENTITY การใช้งานใน Fabric Data Warehouse บทความนี้สรุปกลยุทธ์การโยกย้ายที่มีประสิทธิภาพเพื่อช่วยคุณเชื่อมช่องว่างนี้และย้ายสคีมาและข้อมูลของคุณไปยัง Fabric Data Warehouse ได้สําเร็จ

การโยกย้ายฐานข้อมูลไปยัง Fabric Data Warehouse นําเสนอความท้าทายที่ไม่เหมือนใครสําหรับองค์กรที่ต้องพึ่งพาคอลัมน์ตัวแทนที่มีอยู่ เช่น IDENTITY หรือ SEQUENCE ฟังก์ชันในกลไกจัดการฐานข้อมูล SQL:

  • ซึ่งแตกต่างจากสภาพแวดล้อม SQL Server แบบดั้งเดิม Fabric Data Warehouse ใช้แบบจําลองแบบกระจายสําหรับการสร้างค่าข้อมูลประจําตัว ซึ่งรับประกันความเป็นเอกลักษณ์ แต่ไม่รับประกันลําดับตามลําดับ
    • IDENTITYใน Fabric Data Warehouse ไม่รองรับIDENTITY_INSERT คุณไม่สามารถแทรกค่าที่มีอยู่ได้โดยตรง
    • IDENTITYใน Fabric Data Warehouse ไม่สนับสนุนการกําหนดค่า SEED หรือINCREMENT IDENTITY ค่าไม่ซ้ํากันและได้รับการจัดการโดยอัตโนมัติ
  • เฉพาะชนิดข้อมูล bigint เท่านั้นที่ได้รับการสนับสนุนสําหรับ IDENTITY คอลัมน์ใน Fabric Data Warehouse
  • Fabric Data Warehouse ไม่ได้บังคับใช้ข้อจํากัดที่สําคัญ

กระบวนการย้ายข้อมูลทีละขั้นตอน

เมื่อต้องการแสดงวิธีการที่อธิบายไว้ในบทความนี้ ให้พิจารณาสองตาราง: Customers ตารางและ Orders ตาราง Ordersตารางอ้างอิงCustomersตารางโดยใช้CustomerIDคอลัมน์

Entity-Relationship ไดอะแกรมที่แสดงสองตาราง: 'ลูกค้า' และ 'คําสั่งซื้อ'

ในการโยกย้ายตารางเหล่านี้จากแหล่งที่มาไปยังตาราง Fabric Data Warehouse ที่ใช้ IDENTITY คอลัมน์ เราจําเป็นต้องเติมน้ําให้กับตารางปลายทางด้วยรหัสใหม่และอัปเดตตารางที่อ้างอิง เราสามารถบรรลุเป้าหมายได้โดยใช้กลยุทธ์ต่อไปนี้:

  1. โหลดข้อมูลจากตารางต้นทางลงในตารางการจัดเตรียมใน Fabric Data Warehouse ที่ไม่ได้ใช้ IDENTITY คอลัมน์
  2. โหลดข้อมูลจากตารางการจัดเตรียมลงในตารางสุดท้ายที่ใช้ IDENTITY คอลัมน์ แต่คัดลอกข้อมูลต้นฉบับของคอลัมน์ ID จากตารางการจัดเตรียมไปยังคอลัมน์ชั่วคราวใหม่ในตารางสุดท้าย
  3. UPDATE การอ้างอิงในตารางที่เกี่ยวข้อง

ตัวอย่าง: โยกย้ายข้อมูลจากตารางที่ใช้คอลัมน์ IDENTITY ไปยัง Fabric Data Warehouse

ขั้นตอนถัดไปจะอธิบายวิธีกลยุทธ์นี้สามารถทําได้โดยใช้ IDENTITY คอลัมน์ใน Fabric Data Warehouse

ขั้นตอนที่ 1: โหลดข้อมูลต้นฉบับลงในตารางการจัดเตรียม

เริ่มต้นด้วยการสร้างตารางการจัดเตรียมใน Fabric Data Warehouse ที่สะท้อนสคีมาของตารางต้นทางของคุณ แต่สร้างตารางการจัดเตรียมด้วย IDENTITY คอลัมน์

โหลดข้อมูลต้นทางของคุณลงในตารางการจัดเตรียมเหล่านี้ รวมถึงค่าข้อมูลประจําตัวเดิม

ขั้นตอนที่ 2: แทรกข้อมูลลงในตารางปลายทางและแมปค่า IDENTITY เดิม

จากนั้น แทรกข้อมูลจากตารางการจัดเตรียมลงในตารางปลายทางในคลังสินค้าของคุณ

ตารางปลายทางควรใช้ IDENTITY บนคอลัมน์คีย์

ในระหว่างขั้นตอนนี้ ให้แมปค่าข้อมูลประจําตัวเดิมจากตารางการจัดเตรียมไปยังคอลัมน์ใหม่ในตารางปลายทาง

ไดอะแกรมแสดงการโยกย้ายข้อมูลจากตาราง 'ลูกค้า (การจัดเตรียม)' ไปยัง 'ลูกค้า (ขั้นสุดท้าย)'

ตัวอย่างเช่น เมื่อย้ายตาราง Customers คุณสามารถใช้คําสั่งเช่น:

-- Pseudo code: replace ... with your own column list
INSERT INTO dbo.Customers (Name, Email, ... , LegacyCustomerID)
SELECT s.Name, s.Email, ..., s.CustomerID
FROM dbo.Staging_Customers AS s;

วิธีการนี้รักษาค่าข้อมูลประจําตัวเดิมใน LegacyCustomerID คอลัมน์เพื่อใช้ในขั้นตอนต่อๆ ไป

ทําซ้ําขั้นตอนนี้สําหรับตารางทั้งหมดในคลังสินค้าของคุณที่ใช้ IDENTITY คอลัมน์

ขั้นตอนที่ 3: อัปเดตความสัมพันธ์ของคีย์นอกโดยใช้ค่าข้อมูลประจําตัวเดิม

สําหรับตารางที่มีคีย์นอกที่ IDENTITY อ้างอิงคอลัมน์ ให้เข้าร่วมเวอร์ชันการจัดเตรียมของตารางที่อ้างอิงโดยใช้คอลัมน์รหัสดั้งเดิมชั่วคราวเพื่อรับรหัสที่สร้างขึ้นโดย Fabric Data Warehouse ใหม่

ไดอะแกรมโฟลว์ข้อมูลแสดงการย้ายจาก 'ใบสั่ง (การจัดเตรียม)' ไปยัง 'ใบสั่ง (ขั้นสุดท้าย)' พร้อมการเชื่อมโยงลูกค้าจาก 'ลูกค้า (ขั้นสุดท้าย)'

ตัวอย่างเช่น เมื่อย้ายตาราง Orders ที่อ้างอิงลูกค้า:

INSERT INTO dbo.Orders (OrderDate, ... , CustomerID)
SELECT o.OrderDate, ..., c.CustomerID
FROM dbo.Staging_Orders AS o
INNER JOIN dbo.Customers AS c
ON o.CustomerID = c.LegacyCustomerID; 

วิธีการนี้ช่วยให้แน่ใจว่าความสัมพันธ์ระหว่างตารางจะถูกเก็บรักษาไว้แม้ว่า new IDENTITY จะสร้าง ID ใหม่ในอนาคต

ขั้นตอนที่ 4 (ไม่บังคับ): ล้างคอลัมน์ชั่วคราว

หลังจากยืนยันว่าความสัมพันธ์ทั้งหมดได้รับการแมปอย่างถูกต้องและรักษาความสมบูรณ์ของข้อมูลไว้

ALTER TABLE Orders 
DROP COLUMN LegacyCustomerID;

หรือเก็บคอลัมน์ไว้เหมือน LegacyCustomerID ในตารางสุดท้ายสําหรับการตรวจสอบในอนาคต สายข้อมูล หรือเหตุผลในการแก้ไขปัญหา