จัดการ lakehouse ใน Microsoft Fabric ด้วย REST API
Microsoft Fabric Rest API ให้บริการจุดสิ้นสุดการบริการสําหรับการดําเนินการ CRUD ของรายการ Fabric การดําเนินการต่อไปนี้สามารถใช้ได้สําหรับเลคเฮ้าส์:
การดำเนินการ | คำอธิบาย |
---|---|
สร้าง | สร้างเลคเฮ้าส์ภายในพื้นที่ทํางาน จุดสิ้นสุดการวิเคราะห์ SQL ยังได้รับการเตรียมใช้งานพร้อมกับเลคเฮ้าส์ |
Update | อัปเดตชื่อของเลคเฮ้าส์และจุดสิ้นสุดการวิเคราะห์ SQL |
Delete | ลบเลคเฮ้าส์และจุดสิ้นสุดการวิเคราะห์ SQL ที่เกี่ยวข้อง |
รับคุณสมบัติ | รับคุณสมบัติของเลคเฮ้าส์และจุดสิ้นสุดการวิเคราะห์ SQL |
ตารางรายการ | แสดงตารางในเลคเฮ้าส์ |
การโหลดตาราง | สร้างตารางส่วนที่แตกต่างจากไฟล์และโฟลเดอร์ CSV และ parquet |
การบํารุงรักษาตาราง | ใช้การกระชับช่องเก็บ V-Order และการลบไฟล์ที่ไม่ถูกเฟรนซ์และเก่า |
ข้อกำหนดเบื้องต้น
หากต้องการใช้ Fabric REST API ก่อนอื่นคุณต้องได้รับโทเค็น Microsoft Entra สําหรับ Fabric service จากนั้นใช้โทเค็นนั้นในส่วนหัวการรับรองความถูกต้องของการเรียกใช้ API
Microsoft Fabric Rest API กําหนดจุดสิ้นสุดแบบรวมสําหรับการดําเนินการ ปลายทางคือ
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items
ตัวแทนข้อความ{workspaceId}
และ{lakehouseId}
ควรถูกแทนที่ด้วยค่าที่เหมาะสมเมื่อออกคําสั่งที่เป็นแบบอย่างในบทความนี้
เลคเฮ้าส์ CRUD
ใช้ API ต่อไปนี้เพื่อดําเนินการสร้าง แก้ไข และลบเลคเฮ้าส์ภายในพื้นที่ทํางาน
สร้างเลคเฮ้าส์
ขอร้อง:
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items
{
"displayName": "demo",
"type": "Lakehouse"
}
การตอบสนอง:
{
"id": "56c6dedf-2640-43cb-a412-84faad8ad648",
"type": "Lakehouse",
"displayName": "demo",
"description": "",
"workspaceId": "fc67689a-442e-4d14-b3f8-085076f2f92f"
}
ปรับปรุงเลคเฮ้าส์
ปรับปรุงคําอธิบาย และเปลี่ยนชื่อของเลคเฮ้าส์
ขอร้อง:
PATCH https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/dc39f96a-47d7-4c2d-9358-740f50c0aa31
{
"displayName": "newname",
"description": "Item's New description"
}
การตอบสนอง:
{
"id": "56c6dedf-2640-43cb-a412-84faad8ad648",
"type": "Lakehouse",
"displayName": "newname",
"description": "",
"workspaceId": "fc67689a-442e-4d14-b3f8-085076f2f92f"
}
รับคุณสมบัติเลคเฮ้าส์
ขอร้อง:
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}
การตอบสนอง:
{
"id": "daaa77c7-9ef4-41fc-ad3c-f192604424f5",
"type": "Lakehouse",
"displayName": "demo",
"description": "",
"workspaceId": "bee6c118-c2aa-4900-9311-51546433bbb8",
"properties": {
"oneLakeTablesPath": "https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Tables",
"oneLakeFilesPath": "https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Files",
"sqlEndpointProperties": {
"connectionString": "A1bC2dE3fH4iJ5kL6mN7oP8qR9-C2dE3fH4iJ5kL6mN7oP8qR9sT0uV-datawarehouse.pbidedicated.windows.net",
"id": "0dfbd45a-2c4b-4f91-920a-0bb367826479",
"provisioningStatus": "Success"
}
}
}
ลบเลคเฮ้าส์
เมื่อคุณลบเลคเฮ้าส์ เมตาดาต้าของวัตถุและข้อมูลจะถูกลบ การอ้างอิงทางลัดจะถูกลบออก แต่ข้อมูลถูกเก็บไว้ที่เป้าหมาย
ขอร้อง:
DELETE https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}
การตอบสนอง: ว่างเปล่า
แสดงตารางในเลคเฮ้าส์
ขอร้อง:
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables
การตอบสนอง:
{
"continuationToken": null,
"continuationUri": null,
"data": [
{
"type": "Managed",
"name": "demo1",
"location": "abfss://c522396d-7ac8-435d-8d77-442c3ff21295@onelake.dfs.fabric.microsoft.com/{workspaceId}/Tables/demo1",
"format": "delta"
}
]
}
API ตารางรายการสนับสนุนการแบ่งหน้า ระบุ maxResults ต่อหน้าเป็นพารามิเตอร์สําหรับคําขอ และ API ตอบสนองด้วย URI ความต่อเนื่องที่สามารถใช้เพื่อรับหน้าถัดไปของผลลัพธ์
ตัวอย่างการแบ่งหน้า
ขอร้อง:
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables?maxResults=1
การตอบสนอง:
{
"continuationToken": "+RID:~HTsuAOseYicH-GcAAAAAAA==#RT:1#TRC:1#ISV:2#IEO:65567#QCF:8#FPC:AgKfAZ8BnwEEAAe8eoA=",
"continuationUri": "https://api.fabric.microsoft.com:443/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables?continuationToken=%2BRID%3A~HTsuAOseYicH-GcAAAAAAA%3D%3D%23RT%3A1%23TRC%3A1%23ISV%3A2%23IEO%3A65567%23QCF%3A8%23FPC%3AAgKfAZ8BnwEEAAe8eoA%3D",
"data": [
{
"type": "Managed",
"name": "nyctaxismall",
"location": "abfss://bee6c118-c2aa-4900-9311-51546433bbb8@onelake.dfs.fabric.microsoft.com/daaa77c7-9ef4-41fc-ad3c-f192604424f5/Tables/nyctaxismall",
"format": "delta"
}
]
}
โหลดไปยังตาราง
API นี้เพิ่มขีดความสามารถของคุณลักษณะโหลดไปยังทะเลสาบตาราง ด้วย API นี้คุณสามารถโหลดไฟล์ CSV และ parquet ไปยังตารางทะเลสาบเดลต้าใหม่หรือที่มีอยู่ในทะเลสาบ
API นี้เป็นแบบอะซิงโครนัส ดังนั้นจึงจําเป็นต้องใช้สามขั้นตอน:
- อัปโหลดไฟล์และโฟลเดอร์ไปยังส่วนไฟล์ของ Lakehouse โดยใช้ OneLake API
- ส่งการโหลดไปยังตารางคําขอ API
- ติดตามสถานะของการดําเนินการจนกว่าจะเสร็จสมบูรณ์
ส่วนต่อไปนี้ถือว่ามีการอัปโหลดไฟล์แล้ว
โหลดไปยังตารางคําขอ API
พารามิเตอร์ mode
สนับสนุน overwrite
และ append
การดําเนินการ
pathType
พารามิเตอร์ที่ระบุถ้าโหลดไฟล์แต่ละไฟล์หรือไฟล์ทั้งหมดจากโฟลเดอร์ที่ระบุ
ทั้ง CSV
และ parquet
ได้รับการสนับสนุนเป็นพารามิเตอร์ไฟล์format
ตัวอย่างนี้อัปโหลดไฟล์ CSV ที่demo.csv
ชื่อว่า ลงในตารางที่มีอยู่ที่มีชื่อว่าdemo
ขอร้อง:
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables/demo/load
{
"relativePath": "Files/demo.csv",
"pathType": "File",
"mode": "overwrite",
"formatOptions":
{
"header": "true",
"delimiter": ",",
"format": "CSV"
}
}
ส่วนหัวการตอบสนองประกอบด้วย URI เพื่อทําการสํารวจสถานะของการดําเนินการแบบอะซิงโครนัส URI อยู่ใน ตัวแปร Location ของส่วนหัวการตอบสนอง
ตัวแปร Location มี URI ดังนี้: https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/operations/32ad6d2a-82bb-420d-bb57-4620c8860373
guid 32ad6d2a-82bb-420d-bb57-4620c8860373
คือ ID การดําเนินการเพื่อคิวรีสถานะของการเรียกใช้โหลดไปยังการดําเนินการตารางตามที่อธิบายไว้ในส่วนถัดไป
การตรวจสอบการโหลดไปยังการดําเนินการตาราง
หลังจากจับ operationId จากการตอบสนองของคําขอ API โหลดไปยังตาราง ให้ดําเนินการตามคําขอต่อไปนี้:
ขอร้อง:
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/operations/{operationId}
การตอบสนอง:
{
"Status": 3,
"CreatedTimeUtc": "",
"LastUpdatedTimeUtc": "",
"PercentComplete": 100,
"Error": null
}
สถานะการดําเนินการที่เป็นไปได้สําหรับการโหลดไปยังตาราง:
- 1 - การดําเนินการที่ไม่ได้เริ่มต้น
- 2 - วิ่ง
- 3 - ความสําเร็จ
- 4 - ล้มเหลว
การบํารุงรักษาตาราง
API นี้เพิ่มขีดความสามารถของคุณลักษณะการบํารุงรักษาตารางของ Lakehouse ด้วย API นี้ คุณสามารถใช้การกระชับช่องเก็บ V-Order และล้างข้อมูลไฟล์เก่าที่ไม่อนุมานได้
API นี้เป็นแบบอะซิงโครนัส ดังนั้นจึงจําเป็นต้องใช้สองขั้นตอน:
- ส่งคําขอ API การบํารุงรักษาตาราง
- ติดตามสถานะของการดําเนินการจนกว่าจะเสร็จสมบูรณ์
คําขอ API การบํารุงรักษาตาราง
ตัวอย่างนี้เรียกใช้งานการบํารุงรักษาตารางที่ใช้ V-Order กับตาราง ในขณะที่ยังใช้ Z-Order กับ tipAmount
คอลัมน์และดําเนินการ VACUUM
กับการเก็บข้อมูลเจ็ดวันและหนึ่งชั่วโมง
ขอร้อง:
POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances?jobType=TableMaintenance
{
"executionData": {
"tableName": "{table_name}",
"optimizeSettings": {
"vOrder": "true",
"zOrderBy": [
"tipAmount"
]
},
"vacuumSettings": {
"retentionPeriod": "7.01:00:00"
}
}
}
ส่วนหัวการตอบสนองประกอบด้วย URI เพื่อทําการสํารวจสถานะของการดําเนินการแบบอะซิงโครนัส URI อยู่ใน ตัวแปร Location ของส่วนหัวการตอบสนอง
ตัวแปร Location มี URI ดังนี้: https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances/f2d65699-dd22-4889-980c-15226deb0e1b
guid f2d65699-dd22-4889-980c-15226deb0e1b
เป็น ID การดําเนินการเพื่อคิวรีสถานะของการดําเนินการบํารุงรักษาตารางที่กําลังทํางานอยู่ ตามที่อธิบายไว้ในส่วนถัดไป
การตรวจสอบการดําเนินการบํารุงรักษาตาราง
หลังจากจับ operationId จากการตอบสนองของคําขอ API โหลดไปยังตาราง ดําเนินการตามคําขอต่อไปนี้:
ขอร้อง:
GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances/{operationId}
การตอบสนอง:
{
"parameters": {
"workspaceId": "{workspaceId}",
"itemId": "{lakehouseId}",
"jobInstanceId": "{operationId}"
},
"responses": {
"200": {
"body": {
"id": "{operationId}",
"itemId": "431e8d7b-4a95-4c02-8ccd-6faef5ba1bd7",
"jobType": "DefaultJob",
"invokeType": "Manual",
"status": "Completed",
"rootActivityId": "8c2ee553-53a4-7edb-1042-0d8189a9e0ca",
"startTimeUtc": "2023-04-22T06:35:00.7812154",
"endTimeUtc": "2023-04-22T06:35:00.8033333",
"failureReason": null
}
}
}
}
สถานะการดําเนินการที่เป็นไปได้สําหรับการบํารุงรักษาตาราง:
- NotStarted - งานที่ไม่ได้เริ่มต้น
- InProgress - งานที่กําลังดําเนินการ
- เสร็จสมบูรณ์แล้ว - งานเสร็จสมบูรณ์
- ล้มเหลว - งานล้มเหลว
- ยกเลิก - งานที่ยกเลิกแล้ว
- Deduped - อินสแตนซ์ของชนิดงานเดียวกันกําลังรันอยู่แล้ว และข้ามอินสแตนซ์ของงานนี้