หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้ให้รายละเอียดเกี่ยวกับโซนเริ่มต้นและข้อกําหนดการดําเนินการตาราง/คอลัมน์สําหรับการสะท้อนแบบเปิดใน Microsoft Fabric
เมื่อคุณสร้างฐานข้อมูลมิเรอร์แบบเปิดผ่านพอร์ทัล Fabric หรือ API สาธารณะในพื้นที่ทํางาน Fabric ของคุณแล้ว คุณจะได้รับ URL โซน Landing Zone ใน OneLake ในหน้า แรกของ รายการฐานข้อมูลที่มิเรอร์ของคุณ Landing Zone นี้เป็นที่ที่แอปพลิเคชันของคุณสร้างไฟล์ข้อมูลเมตาและข้อมูล Land ในรูปแบบ Parquet หรือข้อความที่คั่น รวมถึง CSV ไฟล์สามารถคลายการบีบอัดหรือบีบอัดด้วย Snappy, GZIP หรือ ZSTD สําหรับข้อมูลเพิ่มเติม โปรดดู ไฟล์ข้อมูลที่รองรับและรูปแบบ
โซนลงจอด
สําหรับฐานข้อมูลมิเรอร์ทุกฐานข้อมูล จะมีตําแหน่งที่เก็บข้อมูลที่ไม่ซ้ํากันใน OneLake สําหรับเมตาดาต้าและตารางเดลต้า การมิเรอร์แบบเปิดมีโฟลเดอร์โซน Landing Zone สําหรับแอปพลิเคชันในการสร้างไฟล์ข้อมูลเมตาและส่งข้อมูลไปยัง OneLake การมิเรอร์จะตรวจสอบไฟล์เหล่านี้ในโซน Landing Zone และอ่านโฟลเดอร์สําหรับตารางและข้อมูลที่เพิ่มเข้ามาใหม่
ตัวอย่างเช่น ถ้าคุณมีตาราง (Table A, , Table B) Table Cที่จะสร้างในโซน Landing Zone ให้สร้างโฟลเดอร์ เช่น URL ต่อไปนี้:
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableAhttps://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableBhttps://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableC
ไฟล์ข้อมูลเมตาในโซน Landing Zone
ทุกโฟลเดอร์ตารางต้องมีไฟล์_metadata.json
ไฟล์ข้อมูลเมตาของตารางนี้มีระเบียน JSON เพื่อระบุเฉพาะคอลัมน์คีย์ที่ไม่ซ้ํากันเป็น keyColumns.
ตัวอย่างเช่น หากต้องการประกาศคอลัมน์ C1 และเป็น C2 คีย์ที่ไม่ซ้ํากันแบบผสมสําหรับตาราง:
{
"keyColumns" : ["C1", "C2"]
}
หากมี keyColumns การระบุหรือไม่ _metadata.json ระบุ จะไม่สามารถอัปเดต/ลบได้ ไฟล์นี้สามารถเพิ่มได้ตลอดเวลา แต่เมื่อเพิ่มแล้ว keyColumns จะไม่สามารถเปลี่ยนแปลงได้
ไฟล์เหตุการณ์ในโซน Landing Zone
หากคุณเป็นคู่ค้าที่ใช้โซลูชันการมิเรอร์แบบเปิด หรือลูกค้าที่ต้องการให้รายละเอียดเพิ่มเติมแก่เราเกี่ยวกับชนิดของแหล่งข้อมูลที่คุณกําลังมิเรอร์ไปยัง OneLake เราได้เพิ่มไฟล์ใหม่_partnerEvents.json ไม่จําเป็น แต่ขอแนะนําเป็นอย่างยิ่ง
ตัวอย่าง:
{
"partnerName": "testPartner",
"sourceInfo": {
"sourceType": "SQL",
"sourceVersion": "2019",
"additionalInformation": {
"testKey": "testValue"
}
}
}
ข้อกําหนดของ _partnerEvents.json ไฟล์:
-
_partnerEvents.jsonควรวางไฟล์ไว้ที่ระดับฐานข้อมูลที่มิเรอร์ในโซน Landing Zone ไม่ใช่ต่อตาราง - สามารถ
sourceTypeเป็นสตริงอธิบายใด ๆ ที่แสดงถึงแหล่งที่มา ไม่มีข้อจํากัดเกี่ยวกับค่านี้ เช่น "SQL", "Oracle", "Salesforce" เป็นต้น -
partnerNameสามารถตั้งค่าเป็นชื่อใดก็ได้ที่คุณเลือกและสามารถเป็นตัวแทนของชื่อองค์กรของคุณได้ รักษาชื่อให้สอดคล้องกันในฐานข้อมูลมิเรอร์ทั้งหมด
ไฟล์ข้อมูลและรูปแบบในโซน Landing Zone
การสะท้อนแบบเปิดรองรับการรับข้อมูลในรูปแบบ Parquet หรือข้อความที่คั่น ไฟล์สามารถคลายการบีบอัดหรือบีบอัดด้วย Snappy, GZIP หรือ ZSTD
ข้อกําหนดของปาร์เก้
ข้อกําหนดข้อความที่คั่น
สําหรับรูปแบบข้อความที่คั่น ไฟล์ต้องมีแถวส่วนหัวในแถวแรก
สําหรับข้อความที่มีการคั่น ให้ระบุข้อมูลเพิ่มเติมในไฟล์ของคุณ
_metadata.jsonFileExtensionจําเป็นต้องมีที่พัก แฟ้มข้อความที่คั่นมีคุณสมบัติและค่าเริ่มต้นต่อไปนี้:ทรัพย์สิน คำอธิบาย หมาย เหตุ FirstRowAsHeaderจริง/เท็จสําหรับส่วนหัวของแถวแรก ต้องใช้สําหรับ trueไฟล์ข้อความที่มีตัวคั่นRowSeparatorอักขระที่ใช้ในการแยกแถว ค่าเริ่มต้นคือ \r\n. ยังรองรับ\nและ\r.ColumnSeparatorอักขระที่ใช้ในการแยกคอลัมน์ ค่าเริ่มต้นคือ ,. ยังรองรับ;, และ|\t.QuoteCharacterอักขระที่ใช้ในการอ้างค่าที่มีตัวคั่น ค่าเริ่มต้นคือ ". สามารถเป็น'หรือสตริงว่างEscapeCharacterใช้เพื่อหลีกหนีคําพูดภายในค่าที่เสนอราคา ค่าเริ่มต้นคือ \. นอกจากนี้ยังสามารถเป็น/, หรือ"ว่างเปล่าNullValueการแสดงสตริงของค่า null สามารถเป็น "", ,"N/A","null"ฯลฯEncodingการเข้ารหัสอักขระของไฟล์ ค่าเริ่มต้นคือ UTF-8. รองรับการเข้ารหัสที่หลากหลายรวมถึงascii, ,utf-16windows-1252ฯลฯSchemaDefinitionกําหนดชื่อคอลัมน์ ชนิด และความสามารถในการเป็นค่า Null ไม่รองรับวิวัฒนาการสคีมา FileFormatรูปแบบของไฟล์ข้อมูล ค่าเริ่มต้นเป็นถ้า CSVไม่ได้ระบุ ต้องเป็นรูปแบบ"DelimitedText"อื่นที่ไม่ใช่ CSVFileExtensionระบุนามสกุลไฟล์ เช่น .tsv, ..psvจําเป็นเมื่อใช้ DelimitedText.ตัวอย่างเช่น
_metadata.jsonไฟล์สําหรับ.tsvไฟล์ข้อมูลที่มีสี่คอลัมน์:{ "KeyColumns": [ "id" ], "SchemaDefinition": { "Columns": [ { "Name": "id", "DataType": "Int32" }, { "Name": "name", "DataType": "String", "IsNullable": true }, { "Name": "age", "DataType": "Int32", "IsNullable": true }, { "Name": "seqNum", "DataType": "Int64", "IsNullable": false } ] }, "FileFormat": "DelimitedText", "FileExtension": "tsv", "FileFormatTypeProperties": { "FirstRowAsHeader": true, "RowSeparator": "\r\n", "ColumnSeparator": ",", "QuoteCharacter": "'", "EscapeCharacter": "\", "NullValue": "N/A", "Encoding": "UTF-8" } }เฉพาะรูปแบบข้อความที่คั่นเท่านั้นที่คาดว่าจะมีชนิดข้อมูลในไฟล์
_metadata.jsonไฟล์ Parquet ไม่จําเป็นต้องระบุข้อมูลประเภทคอลัมน์ ประเภทข้อมูลที่รองรับในปัจจุบัน:
| ชนิดข้อมูลที่รองรับ | คำอธิบาย |
|---|---|
Double |
ตัวเลขที่มีทศนิยม ใช้เมื่อต้องการความแม่นยําสูง (เช่น 3.14159) |
Single |
ตัวเลขที่มีทศนิยม แต่แม่นยําน้อยกว่า Double (เช่น 3.14) |
Int16 |
จํานวนเต็มขนาดเล็ก โดยทั่วไปอยู่ระหว่าง -32,768 ถึง 32,767 |
Int64 |
จํานวนเต็มที่มากใช้สําหรับจํานวนใหญ่หรือ ID |
Int32 |
จํานวนเต็มมาตรฐานที่ใช้กันทั่วไปสําหรับการนับหรือจัดทําดัชนี |
DateTime |
ค่าวันที่และเวลาแบบเต็ม (เช่น 2025-06-17 14:30:00) |
IDate |
วันที่ในปฏิทินที่ไม่มีเวลา (เช่น 2025-06-17) |
ITime |
ค่าวันที่และเวลาแบบเต็ม (เช่น 2025-06-17 14:30:00) |
String |
ข้อมูลข้อความ เช่น ชื่อ ป้ายกํากับ หรือคําอธิบาย |
Boolean |
ค่าจริงหรือเท็จ มักใช้สําหรับสลับหรือตัวเลือกใช่/ไม่ใช่ |
ByteArray |
ข้อมูลไบนารีดิบ เช่น ไฟล์ รูปภาพ หรือเนื้อหาที่เข้ารหัส |
ข้อกําหนดของรูปแบบ
ไฟล์ทั้งหมดที่เขียนไปยังโซน Landing Zone มีรูปแบบต่อไปนี้:
<rowMarker><DataColumns>
rowMarker: ชื่อคอลัมน์คือ__rowMarker__(รวมถึงขีดล่างสองตัวก่อนและหลังrowMarker)__rowMarker__ค่านิยมและพฤติกรรม:__rowMarker__(สถานการณ์สมมติ)ถ้าไม่มีแถวที่มีคอลัมน์คีย์เดียวกันในปลายทาง ถ้าแถวมีคอลัมน์คีย์เดียวกันในปลายทาง 0(แทรก)แทรกแถวไปยังปลายทาง แทรกแถวไปยังปลายทางไม่มีการตรวจสอบความถูกต้องสําหรับการตรวจสอบคอลัมน์คีย์ dup 1(อัพเดท)แทรกแถวไปยังปลายทางไม่มีการตรวจสอบ / ข้อยกเว้นเพื่อตรวจสอบการมีอยู่ของแถวที่มีคอลัมน์คีย์เดียวกัน อัปเดตแถวด้วยคอลัมน์คีย์เดียวกัน 2(ลบ)ไม่มีการเปลี่ยนแปลงข้อมูล ไม่มีการตรวจสอบความถูกต้อง / ข้อยกเว้นเพื่อตรวจสอบการมีอยู่ของแถวที่มีคอลัมน์คีย์เดียวกัน ลบแถวที่มีคอลัมน์คีย์เดียวกัน 4(อัพเซิร์ต)แทรกแถวไปยังปลายทางไม่มีการตรวจสอบ / ข้อยกเว้นเพื่อตรวจสอบการมีอยู่ของแถวที่มีคอลัมน์คีย์เดียวกัน อัปเดตแถวด้วยคอลัมน์คีย์เดียวกัน ลําดับแถว: บันทึกทั้งหมดในไฟล์ควรอยู่ในลําดับธรรมชาติตามที่ใช้ในธุรกรรม นี่เป็นสิ่งสําคัญสําหรับแถวเดียวกันที่อัปเดตหลายครั้ง การมิเรอร์แบบเปิดจะนําการเปลี่ยนแปลงไปใช้โดยใช้ลําดับในไฟล์
ลําดับไฟล์: ควรเพิ่มไฟล์ในจํานวนที่เพิ่มขึ้นอย่างซ้ําซากจําเจ
ชื่อไฟล์: ชื่อไฟล์มี 20 หลัก เช่นเดียวกับ
00000000000000000001.parquetไฟล์แรก และ00000000000000000002.parquetไฟล์ที่สอง ชื่อไฟล์ควรเป็นตัวเลขต่อเนื่อง ไฟล์จะถูกลบโดยบริการมิเรอร์โดยอัตโนมัติ แต่ไฟล์สุดท้ายจะถูกทิ้งไว้เพื่อให้ระบบผู้เผยแพร่สามารถอ้างอิงเพื่อเพิ่มไฟล์ถัดไปตามลําดับ
สําคัญ
__rowMarker__คอลัมน์ต้องเป็นคอลัมน์สุดท้ายในรายการ
ไฟล์ที่ไม่ต่อเนื่อง
นอกจากนี้ยังรองรับไฟล์ที่ไม่ต่อเนื่อง ไฟล์จะถูกอ่านตามการประทับเวลา เมื่อต้องการระบุสิ่งนี้และค่าเริ่มต้นเป็นการเปลี่ยนแปลง upsert แทนที่จะเป็นการแทรก ให้อัปเดตไฟล์ _metadata.json ดังนี้:
{
"keyColumns" : ["id"],
"fileDetectionStrategy": LastUpdateTimeFileDetection,
"isUpsertDefaultRowMarker": true
}
'ค่าเริ่มต้นในการอัปเซิร์ต' ไม่ได้ขึ้นอยู่กับไฟล์ที่ไม่ต่อเนื่อง รองรับชุดค่าผสมต่อไปนี้ทั้งหมด:
- มีทั้ง fileDetectionStrategy เป็น LastUpdateTimeFileDetection และ isUpsertDefaultRowMarker เป็น true
- มีเฉพาะ isUpsertDefaultRowMarker เป็น true เท่านั้น
- มีเฉพาะ fileDetectionStrategy เป็น LastUpdateTimeFileDetection เท่านั้น
- เริ่ม ต้น
โหลดเริ่มต้น
สําหรับการโหลดข้อมูลเบื้องต้นลงในฐานข้อมูลมิเรอร์แบบเปิด ใน __rowMarker__ ไฟล์ข้อมูลเริ่มต้นเป็นทางเลือกและไม่แนะนํา การมิเรอร์จะถือว่าทั้งแฟ้มเป็น INSERT เมื่อ __rowMarker__ ไม่มีอยู่
เพื่อประสิทธิภาพที่ดีขึ้นและเมตริกที่แม่นยํา เป็น __rowMarker__ ฟิลด์บังคับสําหรับการเปลี่ยนแปลงที่เพิ่มขึ้นเพื่อใช้การดําเนินการอัปเดต/ลบ/อัปเซิร์ต
การเปลี่ยนแปลงที่เพิ่มขึ้น
การมิเรอร์แบบเปิดจะอ่านการเปลี่ยนแปลงที่เพิ่มขึ้นตามลําดับและนําไปใช้กับตารางเดลต้าเป้าหมาย ลําดับเป็นนัยในบันทึกการเปลี่ยนแปลงและตามลําดับของไฟล์
การเปลี่ยนแปลงข้อมูลจะถือเป็นการเปลี่ยนแปลงที่เพิ่มขึ้นเมื่อพบคอลัมน์จาก __rowMarker__ แถว/ไฟล์ใดๆ
แถวที่อัปเดตต้องมีข้อมูลแถวแบบเต็ม พร้อมคอลัมน์ทั้งหมด
ต่อไปนี้คือตัวอย่างข้อมูลปาร์เก้บางส่วนของประวัติแถวเพื่อเปลี่ยน EmployeeLocationEmployeeID E0001 จาก Redmond เป็น Bellevue ในสถานการณ์สมมตินี้ คอลัมน์EmployeeIDถูกทําเครื่องหมายเป็นคอลัมน์หลักในไฟล์ข้อมูลเมตาในโซนเริ่มต้น
EmployeeID,EmployeeLocation,__rowMarker__
E0001,Redmond,0
E0002,Redmond,0
E0003,Redmond,0
E0001,Bellevue,1
ถ้าคอลัมน์คีย์ได้รับการอัปเดต ควรแสดงโดย DELETE บนคอลัมน์คีย์ก่อนหน้า และแถว INSERT ที่มีคีย์และข้อมูลใหม่ ตัวอย่างเช่น ประวัติแถวเพื่อเปลี่ยน __rowMarker__ ตัวระบุที่ไม่ซ้ํากันสําหรับ EmployeeID E0001 เป็น E0002 คุณไม่จําเป็นต้องให้ข้อมูลคอลัมน์ทั้งหมดสําหรับแถว DELETE เฉพาะคอลัมน์หลักเท่านั้น
EmployeeID,EmployeeLocation,__rowMarker__
E0001,Bellevue,0
E0001,NULL,2
E0002,Bellevue,0
การทํางานของตาราง
การมิเรอร์แบบเปิดรองรับการดําเนินการของตาราง เช่น การเพิ่ม วาง และเปลี่ยนชื่อตาราง
เพิ่มตาราง
การมิเรอร์แบบเปิดจะรับตารางใดๆ ที่เพิ่มลงในโซนลงจอดโดยแอปพลิเคชัน เปิดการสแกนมิเรอร์สําหรับตารางใหม่ในการทําซ้ําทุกครั้ง
วางตาราง
การมิเรอร์แบบเปิดจะติดตามชื่อโฟลเดอร์ ถ้าโฟลเดอร์ตารางถูกลบ การมิเรอร์แบบเปิดจะวางตารางในฐานข้อมูลที่มิเรอร์
ถ้าโฟลเดอร์ถูกสร้างขึ้นใหม่ การมิเรอร์แบบเปิดจะดรอปตารางและสร้างใหม่ด้วยข้อมูลใหม่ในโฟลเดอร์ ซึ่งทําได้โดยการติดตาม ETag สําหรับโฟลเดอร์
เมื่อพยายามวางตาราง คุณสามารถลองลบโฟลเดอร์ได้ แต่มีโอกาสที่การมิเรอร์แบบเปิดยังคงใช้ข้อมูลจากโฟลเดอร์ ซึ่งทําให้การลบล้มเหลวสําหรับผู้เผยแพร่
เปลี่ยนชื่อตาราง
เมื่อต้องการเปลี่ยนชื่อตาราง ให้วางและสร้างโฟลเดอร์ใหม่ด้วยข้อมูลเริ่มต้นและข้อมูลที่เพิ่มขึ้น ข้อมูลจะต้องถูกเติมข้อมูลใหม่ไปยังตารางที่เปลี่ยนชื่อ
Schema
สามารถระบุเส้นทางตารางได้ภายในโฟลเดอร์ schema โซน Landing Zone ของ Schema ควรมี <schemaname>.schema ชื่อโฟลเดอร์ อาจมีสคีมาได้หลายสคีมา และอาจมีหลายตารางในสคีมา
ตัวอย่างเช่น ถ้าคุณมี Schema (Schema1, ) Schema2และตาราง (Table A, , Table B) Table Cที่จะสร้างในโซน Landing Zone ให้สร้างโฟลเดอร์ เช่น เส้นทางต่อไปนี้ใน OneLake:
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableAhttps://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableBhttps://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema2.schema/TableC
คอลัมน์ตารางและการดําเนินการคอลัมน์
ชนิดคอลัมน์
- รองรับประเภทปาร์เก้อย่างง่ายในโซนลงจอด
- ชนิดที่ซับซ้อนควรเขียนเป็นสตริง JSON
- ประเภทไบนารีที่ซับซ้อน เช่น ภูมิศาสตร์ รูปภาพ ฯลฯ สามารถจัดเก็บเป็นประเภทไบนารีในโซนลงจอดได้
เพิ่มคอลัมน์
หากมีการเพิ่มคอลัมน์ใหม่ลงในไฟล์ parquet หรือ CSV การมิเรอร์แบบเปิดจะเพิ่มคอลัมน์ลงในตารางเดลต้า
ลบคอลัมน์
ถ้าคอลัมน์ถูกทิ้งจากแฟ้มบันทึกใหม่ ให้เปิดที่เก็บการ NULL สะท้อนสําหรับคอลัมน์เหล่านั้นในแถวใหม่ และแถวเก่าจะมีคอลัมน์ที่มีอยู่ในข้อมูล เมื่อต้องการลบคอลัมน์ ให้ วางตาราง และสร้างโฟลเดอร์ตารางในโซนเริ่มต้นอีกครั้ง ซึ่งจะส่งผลให้เกิดการสร้างตารางเดลต้าใหม่ด้วยสคีมาและข้อมูลใหม่
การมิเรอร์แบบเปิดจะรวมคอลัมน์ทั้งหมดจากข้อมูลที่เพิ่มในเวอร์ชันก่อนหน้าเสมอ เมื่อต้องการลบคอลัมน์ ให้สร้างตาราง/โฟลเดอร์ใหม่
เปลี่ยนชนิดคอลัมน์
เมื่อต้องการเปลี่ยนชนิดคอลัมน์ ให้วางและสร้างโฟลเดอร์ที่มีข้อมูลเริ่มต้นและข้อมูลส่วนเพิ่มด้วยชนิดคอลัมน์ใหม่ การระบุชนิดคอลัมน์ใหม่โดยไม่สร้างตารางใหม่จะส่งผลให้เกิดข้อผิดพลาด และการจําลองแบบสําหรับตารางนั้นจะหยุดลง เมื่อสร้างโฟลเดอร์ตารางขึ้นมาใหม่การจําลองแบบจะกลับมาทํางานต่อด้วยข้อมูลและสคีมาใหม่
เปลี่ยนชื่อคอลัมน์
เมื่อต้องการเปลี่ยนชื่อคอลัมน์ ให้ลบโฟลเดอร์ตาราง และสร้างโฟลเดอร์ใหม่ที่มีข้อมูลทั้งหมดและชื่อคอลัมน์ใหม่
กระบวนการล้างข้อมูล
กระบวนการล้างข้อมูลสําหรับการเปิดการสะท้อนจะย้ายไฟล์ที่ประมวลผลทั้งหมดไปยังโฟลเดอร์แยกต่างหากที่เรียกว่า _ProcessedFiles หรือ_FilesReadyToDelete หลังจากเจ็ดวัน ไฟล์จะถูกลบออกจากโฟลเดอร์นี้