หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ตัวเชื่อมต่อ Spark สําหรับ Fabric Data Warehouse ช่วยให้นักพัฒนา Spark และนักวิทยาศาสตร์ข้อมูลสามารถเข้าถึงและทํางานกับข้อมูลจาก คลังสินค้าและจุดสิ้นสุดการวิเคราะห์ SQL ของเลคเฮ้าส์ได้ ตัวเชื่อมต่อมีความสามารถต่อไปนี้:
- คุณสามารถทํางานกับข้อมูลจากคลังสินค้าหรือจุดสิ้นสุดการวิเคราะห์ SQL ในพื้นที่ทํางานเดียวกันหรือในหลายพื้นที่ทํางานได้
- จุดสิ้นสุดการวิเคราะห์ SQL ของเลคเฮ้าส์จะค้นพบโดยอัตโนมัติตามบริบทพื้นที่ทํางาน
- ตัวเชื่อมต่อมี Spark API แบบประยุกต์ ทําให้มีความซับซ้อนพื้นฐาน และดําเนินการด้วยโค้ดเพียงบรรทัดเดียว
- ในขณะที่คุณกําลังเข้าถึงตารางหรือมุมมอง ตัวเชื่อมต่อจะสนับสนุนแบบจําลองความปลอดภัยที่กําหนดไว้ในระดับกลไกจัดการ SQL แบบจําลองเหล่านี้รวมถึงการรักษาความปลอดภัยระดับออบเจ็กต์ (OLS) การรักษาความปลอดภัยระดับแถว (RLS) และการรักษาความปลอดภัยระดับคอลัมน์ (CLS)
- ตัวเชื่อมต่อติดตั้งไว้ล่วงหน้าภายในรันไทม์ Fabric ซึ่งจะขจัดความจําเป็นสําหรับการติดตั้งแยกต่างหาก
การรับรองความถูกต้อง
การรับรองความถูกต้อง Microsoft Entra เป็นวิธีการรับรองความถูกต้องแบบรวม ผู้ใช้ลงชื่อเข้าใช้พื้นที่ทํางาน Microsoft Fabric และข้อมูลประจําตัวของพวกเขาจะถูกส่งผ่านไปยังเครื่องมือ SQL โดยอัตโนมัติเพื่อการรับรองความถูกต้องและการรับรองความถูกต้อง ข้อมูลประจําตัวจะถูกแมปโดยอัตโนมัติ และผู้ใช้ไม่จําเป็นต้องระบุตัวเลือกการกําหนดค่าที่เฉพาะเจาะจง
การอนุญาต
ในการเชื่อมต่อกับกลไกจัดการ SQL ผู้ใช้ต้องมีสิทธิ์ในการอ่านเป็นอย่างน้อย (คล้ายกับสิทธิ์การเชื่อมต่อใน SQL Server) บนคลังสินค้าหรือจุดสิ้นสุดการวิเคราะห์ SQL (ระดับรายการ) ผู้ใช้ยังต้องมีสิทธิ์ระดับออบเจ็กต์ที่ละเอียดในการอ่านข้อมูลจากตารางหรือมุมมองที่ระบุ เมื่อต้องการเรียนรู้เพิ่มเติม ดูการรักษาความปลอดภัยสําหรับคลังข้อมูลใน Microsoft Fabric
เทมเพลตโค้ดและตัวอย่าง
ใช้ลายเซ็นของวิธีการ
คําสั่งต่อไปนี้แสดงลายเซ็นของ synapsesql
วิธีการ สําหรับคําขอการอ่าน อาร์กิวเมนต์สามส่วน tableName
จําเป็นสําหรับการเข้าถึงตารางหรือมุมมองจากคลังสินค้าและจุดสิ้นสุดการวิเคราะห์ SQL ของเลคเฮ้าส์ อัปเดตอาร์กิวเมนต์ด้วยชื่อต่อไปนี้ ตามสถานการณ์สมมติของคุณ:
- ส่วนที่ 1: ชื่อของคลังสินค้าหรือเลคเฮ้าส์
- ส่วนที่ 2: ชื่อของสคีมา
- ส่วนที่ 3: ชื่อของตารางหรือมุมมอง
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame
นอกเหนือจากการอ่านจากตารางหรือมุมมองโดยตรง ตัวเชื่อมต่อนี้ยังช่วยให้คุณสามารถระบุคิวรีแบบกําหนดเองหรือแบบพาสทรู ซึ่งจะถูกส่งผ่านไปยังกลไกจัดการ SQL และผลลัพธ์จะถูกส่งกลับไปยัง Spark
spark.read.option(Constants.DatabaseName, "<warehouse/lakeshouse name>").synapsesql("<T-SQL Query>") => org.apache.spark.sql.DataFrame
ขณะที่ตัวเชื่อมต่อนี้ค้นพบจุดสิ้นสุดสําหรับคลังสินค้า /lakehouse ที่ระบุโดยอัตโนมัติ ถ้าคุณต้องการระบุอย่างชัดเจน คุณสามารถทําได้
//For warehouse
spark.conf.set("spark.datawarehouse.<warehouse name>.sqlendpoint", "<sql endpoint,port>")
//For lakehouse
spark.conf.set("spark.lakehouse.<lakeshouse name>.sqlendpoint", "<sql endpoint,port>")
//Read from table
spark.read.synapsesql("<warehouse/lakeshouse name>.<schema name>.<table or view name>")
อ่านข้อมูลภายในพื้นที่ทํางานเดียวกัน
สำคัญ
เรียกใช้คําสั่งนําเข้าเหล่านี้ที่จุดเริ่มต้นของสมุดบันทึกของคุณ หรือก่อนที่คุณจะเริ่มใช้ตัวเชื่อมต่อ:
import com.microsoft.spark.fabric
from com.microsoft.spark.fabric.Constants import Constants
โค้ดต่อไปนี้เป็นตัวอย่างในการอ่านข้อมูลจากตารางหรือมุมมองใน Spark DataFrame:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
โค้ดต่อไปนี้เป็นตัวอย่างในการอ่านข้อมูลจากตารางหรือมุมมองใน Spark DataFrame ที่มีขีดจํากัดจํานวนแถว 10:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").limit(10)
โค้ดต่อไปนี้เป็นตัวอย่างสําหรับอ่านข้อมูลจากตารางหรือมุมมองใน Spark DataFrame หลังจากที่คุณใช้ตัวกรอง:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").filter("column name == 'value'")
โค้ดต่อไปนี้เป็นตัวอย่างในการอ่านข้อมูลจากตารางหรือมุมมองใน Spark DataFrame สําหรับคอลัมน์ที่เลือกเท่านั้น:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").select("column A", "Column B")
อ่านข้อมูลทั่วทั้งพื้นที่ทํางาน
หากต้องการเข้าถึงและอ่านข้อมูลจากคลังหรือเลคเฮ้าส์ทั่วทั้งพื้นที่ทํางาน คุณสามารถระบุ ID พื้นที่ทํางานที่มีคลังหรือเลคเฮ้าส์อยู่ และจากนั้นจึงระบุ ID รายการเลคเฮ้าส์หรือคลัง บรรทัดต่อไปนี้แสดงตัวอย่างของการอ่านข้อมูลจากตารางหรือมุมมองใน Spark DataFrame จากคลังสินค้าหรือเลคเฮ้าส์ที่มี ID พื้นที่ทํางานที่ระบุและ ID ของเลคเฮ้าส์/คลังสินค้า:
# For lakehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.LakehouseId, "<lakehouse item id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
# For warehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.DatawarehouseId, "<warehouse item id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
หมายเหตุ
เมื่อคุณกําลังใช้งานสมุดบันทึก ตามค่าเริ่มต้น ตัวเชื่อมต่อจะค้นหาคลังสินค้าหรือเลคเฮ้าส์ที่ระบุในพื้นที่ทํางานของเลคเฮ้าส์ที่แนบมากับสมุดบันทึก เมื่อต้องการอ้างอิงคลังสินค้าหรือเลคเฮ้าส์จากพื้นที่ทํางานอื่น ให้ระบุ ID พื้นที่ทํางานและเลคเฮ้าส์ หรือ ID รายการคลังสินค้าดังด้านบน
สร้างตารางเลคเฮ้าส์ตามข้อมูลจากคลังสินค้า
บรรทัดของโค้ดเหล่านี้ให้ตัวอย่างในการอ่านข้อมูลจากตารางหรือมุมมองใน Spark DataFrame และใช้เพื่อสร้างตารางเลคเฮ้าส์:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
df.write.format("delta").saveAsTable("<Lakehouse table name>")
เขียนข้อมูล Spark dataframe ไปยังตารางคลังสินค้า
ตัวเชื่อมต่อนี้ใช้กระบวนการเขียนสองขั้นตอนไปยังตาราง Fabric DW ในตอนแรก จะจัดลําดับขั้นข้อมูล Spark ลงในที่เก็บข้อมูลขั้นกลาง ตามด้วยการใช้คําสั่ง COPY INTO
เพื่อนําเข้าข้อมูลลงในตาราง Fabric DW วิธีนี้ช่วยให้มั่นใจถึงความสามารถในการปรับขนาดด้วยการเพิ่มปริมาณข้อมูล
โหมดบันทึก DataFrame ที่รองรับ
การติดตามโหมดบันทึกได้รับการสนับสนุนเมื่อเขียนข้อมูลต้นฉบับของกรอบข้อมูลไปยังตารางปลายทางในคลัง:
- ErrorIfExists (โหมดบันทึกเริ่มต้น): ถ้ามีตารางปลายทาง การเขียนจะถูกยกเลิกโดยมีข้อยกเว้นที่ส่งกลับไปยังผู้เรียก มิฉะนั้น ตารางใหม่จะถูกสร้างขึ้นด้วยข้อมูล
- ละเว้น: ถ้ามีตารางปลายทาง การเขียนจะละเว้นคําขอเขียนโดยไม่ส่งกลับข้อผิดพลาด มิฉะนั้น ตารางใหม่จะถูกสร้างขึ้นด้วยข้อมูล
- เขียนทับ: ถ้ามีตารางปลายทาง ข้อมูลที่มีอยู่ในปลายทางจะถูกแทนที่ด้วยข้อมูล มิฉะนั้น ตารางใหม่จะถูกสร้างขึ้นด้วยข้อมูล
- ผนวก: ถ้ามีตารางปลายทางอยู่ ข้อมูลใหม่จะถูกผนวกเข้าไปยังตาราง มิฉะนั้น ตารางใหม่จะถูกสร้างขึ้นด้วยข้อมูล
โค้ดต่อไปนี้แสดงตัวอย่างของการเขียนข้อมูลของ Spark dataframe ลงในตาราง Fabric DW:
df.write.synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>") # this uses default mode - errorifexists
df.write.mode("errorifexists").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("ignore").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("append").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
df.write.mode("overwrite").synapsesql("<warehouse/lakehouse name>.<schema name>.<table name>")
หมายเหตุ
ตัวเชื่อมต่อรองรับการเขียนลงในตาราง Fabric DW ในฐานะจุดสิ้นสุดการวิเคราะห์ SQL ของเลคเฮ้าส์เป็นแบบอ่านอย่างเดียว
การแก้ไขปัญหา
เมื่อเสร็จสิ้น ส่วนย่อยของการตอบกลับการอ่านจะปรากฏในผลลัพธ์ของเซลล์ ความล้มเหลวในเซลล์ปัจจุบันจะยกเลิกการดําเนินการเซลล์ที่ตามมาของสมุดบันทึก ข้อมูลข้อผิดพลาดโดยละเอียดมีอยู่ในบันทึกของแอปพลิเคชัน Spark
ข้อควรพิจารณาสําหรับการใช้ตัวเชื่อมต่อนี้
ในขณะนี้ ตัวเชื่อมต่อ:
- รองรับการเรียกหรืออ่านข้อมูลจากคลังผ้าและจุดสิ้นสุดการวิเคราะห์ SQL ของรายการ lakehouse
- รองรับการเขียนข้อมูลไปยังตารางคลังสินค้าโดยใช้โหมดการบันทึกที่แตกต่างกัน - สามารถใช้งานได้กับรันไทม์ GA ล่าสุดเท่านั้น เช่น Runtime 1.3 นอกจากนี้ การดําเนินการเขียนในปัจจุบันจะไม่ทํางานเมื่อเปิดใช้งาน
Private Link
และPublic Access
จะถูกบล็อก - ขณะนี้ Fabric DW สนับสนุน
Time Travel
อย่างไรก็ตาม ตัวเชื่อมต่อนี้ใช้ไม่ได้กับแบบสอบถามที่มีไวยากรณ์การเดินทางเวลา - รักษาลายเซ็นการใช้งานเช่นเดียวกับที่จัดส่งด้วย Apache Spark สําหรับ Azure Synapse Analytics เพื่อความสอดคล้อง อย่างไรก็ตาม การเชื่อมต่อและทํางานกับพูล SQL เฉพาะใน Azure Synapse Analytics จะไม่สามารถใช้งานได้ย้อนหลัง
- ชื่อคอลัมน์ที่มีอักขระพิเศษจะได้รับการจัดการโดยการเพิ่มอักขระเลี่ยงก่อนคิวรี โดยยึดตามชื่อตาราง/มุมมอง 3 ส่วน ในกรณีที่มีการอ่านตามคิวรีแบบกําหนดเองหรือแบบพาสทรู ผู้ใช้จะต้องหลีกเลี่ยงชื่อคอลัมน์ที่จะมีอักขระพิเศษ