หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
สำคัญ
คุณลักษณะนี้อยู่ใน แสดงตัวอย่าง
ODBC (Open Database Connectivity) เป็นมาตรฐานที่นํามาใช้อย่างแพร่หลาย ซึ่งช่วยให้แอปพลิเคชันไคลเอ็นต์สามารถเชื่อมต่อและทํางานกับข้อมูลจากฐานข้อมูลและแพลตฟอร์มข้อมูลขนาดใหญ่ได้
Microsoft ODBC Driver for Fabric Data Engineering ช่วยให้คุณเชื่อมต่อ สืบค้น และจัดการงาน Spark ใน Fabric ด้วยความน่าเชื่อถือและความเรียบง่ายของมาตรฐาน ODBC ไดรเวอร์นี้สร้างขึ้นบน Fabric Livy APIs เพื่อมอบการเชื่อมต่อ Spark SQL ที่ปลอดภัยและยืดหยุ่นสําหรับแอปพลิเคชันและเครื่องมือ BI ที่รองรับ .NET, Python และ ODBC อื่น ๆ
คุณลักษณะสำคัญ
- สอดคล้องกับ ODBC 3.x: การใช้งานข้อกําหนด ODBC 3.x อย่างเต็มรูปแบบ
- การรับรองความถูกต้อง Microsoft Entra ID: โฟลว์การรับรองความถูกต้องหลายขั้นตอน รวมถึงการรับรองความถูกต้องของ Azure CLI, อินเทอร์แอคทีฟ, ข้อมูลประจําตัวของไคลเอ็นต์, ตามใบรับรอง และการรับรองความถูกต้องของโทเค็นการเข้าถึง
- รองรับการสืบค้น Spark SQL: การดําเนินการโดยตรงของคําสั่ง Spark SQL
- รองรับประเภทข้อมูลที่ครอบคลุม: รองรับประเภทข้อมูล Spark SQL ทั้งหมด รวมถึงประเภทที่ซับซ้อน (ARRAY, MAP, STRUCT)
- การนําเซสชันกลับมาใช้ใหม่: การจัดการเซสชันในตัวเพื่อประสิทธิภาพที่ดีขึ้น
- รองรับตารางขนาดใหญ่: การจัดการที่ปรับให้เหมาะสมสําหรับชุดผลลัพธ์ขนาดใหญ่ที่มีขนาดหน้าเว็บที่กําหนดค่าได้
- การดึงข้อมูลล่วงหน้าแบบอะซิงโครนัส: การโหลดข้อมูลเบื้องหลังเพื่อประสิทธิภาพที่ดีขึ้น
- การสนับสนุนพร็อกซี: การกําหนดค่าพร็อกซี HTTP สําหรับสภาพแวดล้อมขององค์กร
- รองรับบ้านพักริมทะเลสาบแบบหลายสคีมา: เชื่อมต่อกับสคีมาเฉพาะภายในบ้านพักริมทะเลสาบ
- การผสานรวม OneLake: เข้าถึงข้อมูลบ้านทะเลสาบที่เก็บไว้ใน OneLake รวมถึงตารางจากหลายสคีมา ผ่านอินเทอร์เฟซ ODBC แบบรวมศูนย์โดยไม่ต้องกําหนดค่าจัดเก็บแยกต่างหาก
- การสนับสนุนรายการสภาพแวดล้อม: แนบรายการสภาพแวดล้อม Fabric ระหว่างการดําเนินการงานเพื่อใช้ไลบรารีพื้นที่ทํางาน คุณสมบัติ Spark และตัวแปรกับแต่ละเซสชัน
- การกําหนดค่า Spark แบบกําหนดเอง: ส่งผ่านคุณสมบัติการกําหนดค่า Spark โดยตรงผ่าน สายอักขระการเชื่อมต่อ เพื่อปรับแต่งลักษณะการทํางานของเซสชัน
Note
ใน Apache Spark แบบโอเพ่นซอร์ส ฐานข้อมูลและสคีมาจะถูกใช้เหมือนกัน ตัวอย่างเช่น การรันSHOW SCHEMASหรือSHOW DATABASESในสมุดบันทึก Fabric จะได้ผลลัพธ์เดียวกัน — คือรายการสคีมาทั้งหมดในบ้านพักริมทะเลสาบ
ข้อกำหนดเบื้องต้น
ก่อนใช้โปรแกรมควบคุม Microsoft ODBC สําหรับ Microsoft Fabric Data Engineering ตรวจสอบให้แน่ใจว่าคุณมี:
- ระบบปฏิบัติการ: Windows 10/11 หรือ Windows Server 2016+
- การเข้าถึง Fabric: การเข้าถึงพื้นที่ทํางาน Fabric
- Microsoft Entra ID credentials: ข้อมูลประจําตัวที่เหมาะสมสําหรับการรับรองความถูกต้อง
- รหัสพื้นที่ทํางานและบ้านพักริมทะเลสาบ: ตัวระบุ GUID สําหรับพื้นที่ทํางาน Fabric และบ้านพักริมทะเลสาบของคุณ
- Azure CLI (ไม่บังคับ): จําเป็นสําหรับวิธีการรับรองความถูกต้องของ Azure CLI
ดาวน์โหลดและติดตั้ง MSI
โปรแกรมควบคุม Microsoft ODBC สําหรับ Microsoft Fabric Data Engineering รุ่น 1.0.0 อยู่ในการแสดงตัวอย่างสาธารณะ ซึ่งคุณสามารถดาวน์โหลดได้จากลิงก์ศูนย์ดาวน์โหลดนี้
- ดาวน์โหลดโปรแกรมควบคุม Microsoft ODBC สําหรับแพคเกจ MSI วิศวกรรมข้อมูล Microsoft Fabric
- ดับเบิลคลิก
MicrosoftFabricODBCDriver-1.0.msi - ทําตามวิซาร์ดการติดตั้งและยอมรับข้อตกลงใบอนุญาต
- เลือกไดเร็กทอรีการติดตั้ง (ค่าเริ่มต้น:
C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\) - ทําการติดตั้งให้เสร็จสมบูรณ์
การติดตั้งแบบเงียบ
# Silent installation
msiexec /i "MicrosoftFabricODBCDriver-1.0.msi" /quiet
# Installation with logging
msiexec /i "MicrosoftFabricODBCDriver-1.0.msi" /l*v install.log
ตรวจสอบการติดตั้ง
หลังการติดตั้ง ให้ตรวจสอบว่าไดรเวอร์ลงทะเบียนแล้ว:
- เรียกใช้
odbcad32.exe(ผู้ดูแลระบบแหล่งข้อมูล ODBC) - ไปที่แท็บไดรเวอร์
- ตรวจสอบว่า "โปรแกรมควบคุม Microsoft ODBC สําหรับวิศวกรรมข้อมูล Microsoft Fabric" แสดงอยู่ในรายการ
ตัวอย่างการเริ่มต้นอย่างรวดเร็ว
ตัวอย่างนี้แสดงวิธีเชื่อมต่อกับ Fabric และดําเนินการคําสั่งโดยใช้ไดรเวอร์ Microsoft ODBC สําหรับ Microsoft Fabric Data Engineering ก่อนเรียกใช้รหัสนี้ ตรวจสอบให้แน่ใจว่าคุณได้ทําตามข้อกําหนดเบื้องต้นและติดตั้งไดรเวอร์แล้ว
ตัวอย่าง Python
import pyodbc
# Connection string with required parameters
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
)
# Connect and execute query
conn = pyodbc.connect(connection_string, timeout=30)
cursor = conn.cursor()
cursor.execute("SELECT 'Hello from Fabric!' as message")
row = cursor.fetchone()
print(row.message)
conn.close()
ตัวอย่าง .NET
using System.Data.Odbc;
// Connection string with required parameters
string connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};" +
"WorkspaceId=<workspace-id>;" +
"LakehouseId=<lakehouse-id>;" +
"AuthFlow=AZURE_CLI;";
using var connection = new OdbcConnection(connectionString);
await connection.OpenAsync();
Console.WriteLine("Connected successfully!");
using var command = new OdbcCommand("SELECT 'Hello from Fabric!' as message", connection);
using var reader = await command.ExecuteReaderAsync();
if (await reader.ReadAsync())
{
Console.WriteLine(reader.GetString(0));
}
รูปแบบสตริงการเชื่อมต่อ
สตริงการเชื่อมต่อพื้นฐาน
โปรแกรมควบคุม Microsoft ODBC สําหรับวิศวกรรมข้อมูล Microsoft Fabric ใช้รูปแบบสายอักขระการเชื่อมต่อต่อไปนี้:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
ส่วนประกอบสตริงการเชื่อมต่อ
| ส่วนประกอบ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| คนขับรถ | ตัวระบุโปรแกรมควบคุม ODBC | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
| WorkspaceId | ตัวระบุพื้นที่ทํางาน Fabric (GUID) | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx |
| LakehouseId | รหัสบ้านพักริมทะเลสาบ Fabric (GUID) | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx |
| ออธโฟลว์ | วิธีการรับรองความถูกต้อง |
AZURE_CLI, INTERACTIVE, CLIENT_CREDENTIAL, CLIENT_CERTIFICATEACCESS_TOKEN |
ตัวอย่างสตริงการเชื่อมต่อ
การเชื่อมต่อพื้นฐาน (การรับรองความถูกต้อง Azure CLI)
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
ด้วยตัวเลือกประสิทธิภาพ
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368
ด้วยการบันทึก
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LogLevel=DEBUG;LogFile=odbc_driver.log
การรับรองความถูกต้อง
โปรแกรมควบคุม Microsoft ODBC สําหรับวิศวกรรมข้อมูล Microsoft Fabric สนับสนุนวิธีการรับรองความถูกต้องหลายวิธีผ่าน Microsoft Entra ID (เดิมคือ Azure Active Directory) การรับรองความถูกต้องถูกกําหนดค่าโดยใช้ AuthFlow พารามิเตอร์ในสตริงการเชื่อมต่อ
วิธีการรับรองความถูกต้อง
| ค่า AuthFlow | คำอธิบาย |
|---|---|
AZURE_CLI |
การพัฒนาโดยใช้ข้อมูลประจําตัว Azure CLI |
INTERACTIVE |
การรับรองความถูกต้องบนเบราว์เซอร์แบบโต้ตอบ |
CLIENT_CREDENTIAL |
บริการหลักพร้อมข้อมูลลับไคลเอ็นต์ |
CLIENT_CERTIFICATE |
บริการหลักพร้อมใบรับรอง |
ACCESS_TOKEN |
โทเค็นการเข้าถึงผู้ถือที่ได้มาล่วงหน้า |
การรับรองความถูกต้องของ Azure CLI
ดีที่สุดสําหรับ: การพัฒนาและแอปพลิเคชันแบบโต้ตอบ
# Python Example
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"Scope=https://api.fabric.microsoft.com/.default;"
)
conn = pyodbc.connect(connection_string)
ข้อกําหนดเบื้องต้น:
- ติดตั้ง Azure CLI:
az --version - เข้าสู่ระบบ:
az login
การรับรองความถูกต้องของเบราว์เซอร์แบบโต้ตอบ
ดีที่สุดสําหรับ: แอปพลิเคชันที่ต้องเผชิญหน้ากับผู้ใช้
# Python Example
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=INTERACTIVE;"
"TenantId=<tenant-id>;"
"Scope=https://api.fabric.microsoft.com/.default;"
)
conn = pyodbc.connect(connection_string)
ลักษณะการทํางาน:
- เปิดหน้าต่างเบราว์เซอร์สําหรับการตรวจสอบผู้ใช้
- ข้อมูลประจําตัวจะถูกแคชสําหรับการเชื่อมต่อที่ตามมา
การรับรองความถูกต้องของข้อมูลประจําตัวไคลเอ็นต์ (บริการหลัก)
ดีที่สุดสําหรับ: บริการอัตโนมัติและงานเบื้องหลัง
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=CLIENT_CREDENTIAL;"
f"TenantId={tenant_id};"
f"ClientId={client_id};"
f"ClientSecret={client_secret};"
)
พารามิเตอร์ที่จําเป็น
-
TenantId: รหัสผู้เช่า Azure -
ClientId: รหัสแอปพลิเคชัน (ไคลเอ็นต์) จาก Microsoft Entra ID -
ClientSecret: ข้อมูลลับของไคลเอ็นต์จาก Microsoft Entra ID
แนวทางปฏิบัติที่ดีที่สุด
- จัดเก็บข้อมูลลับอย่างปลอดภัย (Azure Key Vault, ตัวแปรสภาพแวดล้อม)
- ใช้ข้อมูลประจําตัวที่มีการจัดการเมื่อเป็นไปได้
- หมุนเวียนความลับอย่างสม่ําเสมอ
การรับรองความถูกต้องตามใบรับรอง
ดีที่สุดสําหรับ: แอปพลิเคชันระดับองค์กรที่ต้องการการรับรองความถูกต้องตามใบรับรอง
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=CLIENT_CERTIFICATE;"
"TenantId=<tenant-id>;"
"ClientId=<client-id>;"
"CertificatePath=C:\\certs\\mycert.pfx;"
"CertificatePassword=<password>;"
)
พารามิเตอร์ที่จําเป็น:
-
TenantId: รหัสผู้เช่า Azure -
ClientId: รหัสแอปพลิเคชัน (ไคลเอ็นต์) -
CertificatePath: เส้นทางไปยังไฟล์ใบรับรอง PFX/PKCS12 -
CertificatePassword: รหัสผ่านใบรับรอง
การรับรองความถูกต้องของโทเค็นการเข้าถึง
ดีที่สุดสําหรับ: สถานการณ์การรับรองความถูกต้องแบบกําหนดเอง
# Acquire token through custom mechanism
access_token = acquire_token_from_custom_source()
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=ACCESS_TOKEN;"
f"AccessToken={access_token};"
)
พารามิเตอร์การกําหนดค่า
พารามิเตอร์ที่ต้องการ
พารามิเตอร์เหล่านี้ต้องมีอยู่ในทุกสตริงการเชื่อมต่อ:
| พารามิเตอร์ | ประเภท | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| WorkspaceId | ยูอี | ตัวระบุพื้นที่ทํางานของ Fabric | 4bbf89a8-... |
| LakehouseId | ยูอี | รหัสบ้านพักริมทะเลสาบ Fabric | d8faa650-... |
| ออธโฟลว์ | สตริง | ชนิดโฟลว์การรับรองความถูกต้อง | AZURE_CLI |
พารามิเตอร์เพิ่มเติม
การตั้งค่าการเชื่อมต่อ
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| ฐานข้อมูล | สตริง | ไม่มี | ฐานข้อมูลเฉพาะเพื่อเชื่อมต่อ |
| ขอบเขต | สตริง | https://api.fabric.microsoft.com/.default |
ขอบเขต OAuth |
การตั้งค่าประสิทธิภาพ
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| ใช้ซ้ําเซสชัน | แบบบูลีน | true |
นําเซสชัน Spark ที่มีอยู่กลับมาใช้ใหม่ |
| LargeTable รองรับ | แบบบูลีน | false |
เปิดใช้งานการเพิ่มประสิทธิภาพสําหรับชุดผลลัพธ์ขนาดใหญ่ |
| เปิดใช้งาน AsyncPrefetch | แบบบูลีน | false |
เปิดใช้งานการดึงข้อมูลพื้นหลังล่วงหน้า |
| เพจไซส์ไบต์ | จำนวนเต็ม |
18874368 (18 MB) |
ขนาดหน้าสําหรับการแบ่งหน้าผลลัพธ์ (1-18 MB) |
การตั้งค่าการบันทึก
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| ระดับบันทึก | สตริง | INFO |
ระดับบันทึก: TRACE, DEBUG, , INFO, WARNERROR |
| ไฟล์บันทึก | สตริง | odbc_driver.log |
เส้นทางไฟล์บันทึก (สัมบูรณ์หรือสัมพัทธ์) |
การตั้งค่าพร็อกซี
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| ใช้พร็อกซี | แบบบูลีน | false |
เปิดใช้พร็อกซี |
| พร็อกซีโฮสต์ | สตริง | ไม่มี | ชื่อโฮสต์พร็อกซี |
| พร็อกซีพอร์ต | จำนวนเต็ม | ไม่มี | พอร์ตพร็อกซี |
| พร็อกซีชื่อผู้ใช้ | สตริง | ไม่มี | ชื่อผู้ใช้การรับรองความถูกต้องของพร็อกซี |
| พร็อกซีรหัสผ่าน | สตริง | ไม่มี | รหัสผ่านการรับรองความถูกต้องของพร็อกซี |
การตั้งค่าสภาพแวดล้อม
คุณสามารถแนบรายการสภาพแวดล้อม Fabric กับเซสชัน Spark ที่เริ่มต้นโดยโปรแกรมควบคุม ไลบรารี คุณสมบัติ Spark และตัวแปรของสภาพแวดล้อมที่เลือกจะถูกนําไปใช้โดยอัตโนมัติเมื่อมีการสร้างเซสชัน
| พารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| EnvironmentId | ยูอี | ไม่มี | ตัวระบุรายการสภาพแวดล้อม Fabric (GUID) ที่จะนําไปใช้ระหว่างการสร้างเซสชัน Spark |
ตัวอย่าง สายอักขระการเชื่อมต่อ ที่มีรายการสภาพแวดล้อม:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;EnvironmentId=<environment-id>
Note
สภาพแวดล้อมจะถูกนําไปใช้เมื่อเซสชัน Spark เริ่มต้นขึ้น หากคุณระบุคุณสมบัติการกําหนดค่า Spark แบบกําหนดเองด้วย คุณสมบัติระดับเซสชันจะมีความสําคัญเหนือค่าเริ่มต้นของสภาพแวดล้อม
การกําหนดค่า Spark แบบกําหนดเอง
คุณสามารถส่งผ่านคุณสมบัติการกําหนดค่า Spark ได้โดยตรงใน สายอักขระการเชื่อมต่อ พารามิเตอร์ใดๆ ที่นําหน้า ด้วย spark. จะถูกนําไปใช้กับเซสชัน Spark โดยอัตโนมัติในเวลาที่สร้าง ซึ่งช่วยให้คุณสามารถแทนที่ค่าเริ่มต้นของพื้นที่ทํางานหรือรันไทม์ได้
ตัวอย่างการกําหนดค่า Spark:
spark.sql.shuffle.partitions=200
spark.sql.adaptive.enabled=true
spark.sql.autoBroadcastJoinThreshold=10485760
ตัวอย่าง สายอักขระการเชื่อมต่อ ที่มีคุณสมบัติ Spark ที่กําหนดเอง:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;spark.sql.shuffle.partitions=200;spark.sql.adaptive.enabled=true
Note
คุณสมบัติการกําหนดค่า Spark จะถูกนําไปใช้เมื่อสร้างเซสชัน ใช้กับคิวรีทั้งหมดที่ทํางานภายในเซสชันนั้น และแทนที่สภาพแวดล้อมหรือค่าเริ่มต้นรันไทม์สําหรับคุณสมบัติเดียวกัน
การกําหนดค่า DSN
สร้าง DSN ของระบบ
เปิดผู้ดูแลระบบ ODBC
%SystemRoot%\System32\odbcad32.exeสร้าง DSN ระบบใหม่
- ไปที่แท็บ "System DSN"
- เลือก "เพิ่ม"
- เลือก "Microsoft ODBC Driver for Microsoft Fabric Data Engineering"
- เลือก "เสร็จสิ้น"
กําหนดการตั้งค่า DSN
-
ชื่อแหล่งข้อมูล: ป้อนชื่อที่ไม่ซ้ํากัน (เช่น
FabricODBC) - คําอธิบาย: คําอธิบายเพิ่มเติม
- รหัสพื้นที่ทํางาน: GUID พื้นที่ทํางาน Fabric ของคุณ
- รหัสเลคเฮาส์: GUID เลคเฮาส์ผ้าของคุณ
- การรับรองความถูกต้อง: เลือกวิธีการรับรองความถูกต้อง
- รหัสสภาพแวดล้อม (ไม่บังคับ): ป้อน GUID ของรายการสภาพแวดล้อม Fabric ที่จะแนบระหว่างการสร้างเซสชัน
- กําหนดการตั้งค่าเพิ่มเติมตามต้องการ
-
ชื่อแหล่งข้อมูล: ป้อนชื่อที่ไม่ซ้ํากัน (เช่น
ทดสอบการเชื่อมต่อ
- เลือก "ทดสอบการเชื่อมต่อ" เพื่อตรวจสอบการตั้งค่า
- เลือก "ตกลง" เพื่อบันทึก
ใช้ DSN ในแอปพลิเคชัน
# Python - Connect using DSN
conn = pyodbc.connect("DSN=FabricODBC")
// .NET - Connect using DSN
using var connection = new OdbcConnection("DSN=FabricODBC");
await connection.OpenAsync();
ตัวอย่างการใช้
การเชื่อมต่อและแบบสอบถามพื้นฐาน
หลาม
import pyodbc
def main():
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"ReuseSession=true;"
)
conn = pyodbc.connect(connection_string, timeout=30)
cursor = conn.cursor()
print("Connected successfully!")
# Show available tables
print("\nAvailable tables:")
cursor.execute("SHOW TABLES")
for row in cursor.fetchall():
print(f" {row}")
# Query data
print("\nQuery results:")
cursor.execute("SELECT * FROM employees LIMIT 10")
# Print column names
columns = [desc[0] for desc in cursor.description]
print(f"Columns: {columns}")
# Print rows
for row in cursor.fetchall():
print(row)
conn.close()
if __name__ == "__main__":
main()
.NET
using System.Data.Odbc;
class Program
{
static async Task Main(string[] args)
{
string connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};" +
"WorkspaceId=<workspace-id>;" +
"LakehouseId=<lakehouse-id>;" +
"AuthFlow=AZURE_CLI;" +
"ReuseSession=true;";
using var connection = new OdbcConnection(connectionString);
await connection.OpenAsync();
Console.WriteLine("Connected successfully!");
// Show available tables
Console.WriteLine("\nAvailable tables:");
using (var cmd = new OdbcCommand("SHOW TABLES", connection))
using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
Console.WriteLine($" {reader.GetString(0)}");
}
}
// Query data
Console.WriteLine("\nQuery results:");
using (var cmd = new OdbcCommand("SELECT * FROM employees LIMIT 10", connection))
using (var reader = await cmd.ExecuteReaderAsync())
{
// Print column names
var columns = new List<string>();
for (int i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader.GetName(i));
}
Console.WriteLine($"Columns: {string.Join(", ", columns)}");
// Print rows
while (await reader.ReadAsync())
{
var values = new object[reader.FieldCount];
reader.GetValues(values);
Console.WriteLine(string.Join("\t", values));
}
}
}
}
การทํางานกับชุดผลลัพธ์ขนาดใหญ่
import pyodbc
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"LargeTableSupport=true;"
"PageSizeBytes=18874368;" # 18 MB pages
"EnableAsyncPrefetch=1;"
)
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
# Execute large query
cursor.execute("SELECT * FROM large_table")
# Process in batches
row_count = 0
while True:
rows = cursor.fetchmany(1000) # Fetch 1000 rows at a time
if not rows:
break
for row in rows:
# Process row
row_count += 1
if row_count % 10000 == 0:
print(f"Processed {row_count} rows")
print(f"Total rows processed: {row_count}")
conn.close()
การค้นพบสคีมา
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
# List all tables
print("Tables in current default schema / database:")
cursor.execute("SHOW TABLES")
tables = cursor.fetchall()
for table in tables:
print(f" {table}")
# Describe table structure
print("\nTable structure for 'employees':")
cursor.execute("DESCRIBE employees")
for col in cursor.fetchall():
print(f" {col}")
# List schemas (for multi-schema Lakehouses)
print("\nAvailable schemas:")
cursor.execute("SHOW SCHEMAS")
for db in cursor.fetchall():
print(f" {db}")
conn.close()
การแมปชนิดข้อมูล
โปรแกรมควบคุมแมปชนิดข้อมูล Spark SQL กับชนิด ODBC SQL:
| ประเภท Spark SQL | ชนิด ODBC SQL | ประเภท C/C++ | ประเภท Python | ประเภท .NET |
|---|---|---|---|---|
| บูลีน | SQL_BIT | SQLCHAR | bool | bool |
| ไบต์ | SQL_TINYINT | SQLSCHAR | int | เอสไบต์ |
| สั้น | SQL_SMALLINT | SQLSMALLINT | int | สั้น |
| INT | SQL_INTEGER | SQLINTEGER สแคว้น | int | int |
| ยาว | SQL_BIGINT | สโคลบิจินต์ | int | long |
| ลอย | SQL_REAL | SQLREAL | float | float |
| คู่ | SQL_DOUBLE | SQLDOUBLE | float | สองเท่า |
| ทศนิยม | SQL_DECIMAL | SQLCHAR* | ทศนิยม ทศนิยม | decimal |
| เชือก | SQL_VARCHAR | SQLCHAR* | str | สตริง |
| วาร์ชาร์(n) | SQL_VARCHAR | SQLCHAR* | str | สตริง |
| ชาร์(n) | SQL_CHAR | SQLCHAR* | str | สตริง |
| ไบ นารี | SQL_BINARY | SQLCHAR* | ไบต์ | ไบต์[] |
| วันที่ | SQL_TYPE_DATE | SQL_DATE_STRUCT | วันที่เวลา.วันที่ | DateTime |
| ประทับเวลา | SQL_TYPE_TIMESTAMP | SQL_TIMESTAMP_STRUCT | วันที่เวลา.วันที่เวลา | DateTime |
| อาร์เรย์ | SQL_VARCHAR | SQLCHAR* | str (JSON) | สตริง |
| แผนที่ | SQL_VARCHAR | SQLCHAR* | str (JSON) | สตริง |
| โครงสร้าง | SQL_VARCHAR | SQLCHAR* | str (JSON) | สตริง |
การรวมเครื่องมือ BI
ไมโครซอฟท์ เอ็กเซล
- เปิด Excel -> ข้อมูล -> รับข้อมูล -> จากแหล่งอื่น -> จาก ODBC
- เลือก DSN ที่คุณกําหนดค่าไว้ (เช่น
FabricODBC) - รับรองความถูกต้องหากได้รับแจ้ง
- เรียกดูและเลือกตาราง
- โหลดข้อมูลลงในแผ่นงาน Excel
Power BI Desktop
- เปิด Power BI Desktop -> รับข้อมูล -> ODBC
- เลือก DSN ที่คุณกําหนดค่าไว้
- เรียกดูแค็ตตาล็อกข้อมูลและเลือกตาราง
- แปลงข้อมูลตามต้องการ
- สร้างการแสดงภาพ
SQL Server Management Studio (เซิร์ฟเวอร์ที่เชื่อมโยง)
-- Create linked server
EXEC sp_addlinkedserver
@server = 'FABRIC_LINKED_SERVER',
@srvproduct = 'Microsoft Fabric',
@provider = 'MSDASQL',
@datasrc = 'FabricODBC'
-- Configure RPC
EXEC master.dbo.sp_serveroption
@server = N'FABRIC_LINKED_SERVER',
@optname = N'rpc out',
@optvalue = N'true';
-- Query via linked server
SELECT * FROM OPENQUERY(FABRIC_LINKED_SERVER, 'SHOW TABLES');
SELECT * FROM OPENQUERY(FABRIC_LINKED_SERVER, 'SELECT * FROM employees LIMIT 20');
-- Execute statements
EXEC('SELECT * FROM employees LIMIT 10') AT FABRIC_LINKED_SERVER;
การแก้ไขปัญหา
ส่วนนี้ให้คําแนะนําสําหรับการแก้ไขปัญหาทั่วไปที่คุณอาจพบเมื่อใช้โปรแกรมควบคุม Microsoft ODBC สําหรับวิศวกรรมข้อมูล Microsoft Fabric
ปัญหาทั่วไป
ส่วนต่อไปนี้จะอธิบายปัญหาทั่วไปและวิธีแก้ไข:
การเชื่อมต่อล้มเหลว
ปัญหา: ไม่สามารถเชื่อมต่อกับ Fabric ได้
โซลูชัน:
- ตรวจสอบว่า Workspace ID และ Lakehouse ID เป็น GUID ที่ถูกต้อง
- ตรวจสอบการรับรองความถูกต้อง Azure CLI:
az account show - ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์พื้นที่ทํางาน Fabric ที่เหมาะสม
- ตรวจสอบการเชื่อมต่อเครือข่ายและการตั้งค่าพร็อกซี
ข้อผิดพลาดในการรับรองความถูกต้อง
ปัญหา: การรับรองความถูกต้องล้มเหลวด้วย Azure CLI
โซลูชัน:
- เรียกใช้
az loginเพื่อรีเฟรชข้อมูลประจําตัว - ตรวจสอบผู้เช่าที่ถูกต้อง:
az account set --subscription <subscription-id> - ตรวจสอบความถูกต้องของโทเค็น:
az account get-access-token --resource https://api.fabric.microsoft.com
หมดเวลาคิวรี
ปัญหา: การสืบค้นหมดเวลาบนตารางขนาดใหญ่
โซลูชัน:
- เปิดใช้งาน
LargeTableSupport=true - ปรับ
PageSizeBytesให้มีขนาดก้อนที่เหมาะสมที่สุด - เปิดใช้งานการดึงข้อมูลล่วงหน้าแบบอะซิงโครนัส:
EnableAsyncPrefetch=1 - ใช้
LIMITส่วนคําสั่งเพื่อจํากัดขนาดผลลัพธ์
เปิดใช้งานการบันทึก
เมื่อแก้ไขปัญหา การเปิดใช้งานการบันทึกโดยละเอียดสามารถช่วยคุณระบุสาเหตุของปัญหาได้ คุณสามารถเปิดใช้งานการบันทึกผ่านสตริงการเชื่อมต่อ
วิธีเปิดใช้งานการบันทึกโดยละเอียด:
LogLevel=DEBUG;LogFile=C:\temp\odbc_driver_debug.log;
ระดับบันทึก:
-
TRACE: ฟุ่มเฟือยที่สุด รวมถึงการเรียก API ทั้งหมด -
DEBUG: ข้อมูลการดีบักโดยละเอียด -
INFO: ข้อมูลทั่วไป (ค่าเริ่มต้น) -
WARN: คําเตือนเท่านั้น -
ERROR: ข้อผิดพลาดเท่านั้น
การติดตาม ODBC
สําหรับการวินิจฉัยระดับต่ํา คุณสามารถเปิดใช้งานการติดตาม Windows ODBC เพื่อบันทึกการเรียก ODBC API โดยละเอียดและลักษณะการทํางานของโปรแกรมควบคุม อย่าลืมปิดการติดตามเมื่อไม่ต้องการเพื่อรักษาประสิทธิภาพสูงสุด
เมื่อต้องการเปิดใช้งานการติดตาม ODBC:
- เปิด
odbcad32.exe - ไปที่แท็บ "การติดตาม"
- ตั้งค่าเส้นทางไฟล์การติดตาม (เช่น
C:\temp\odbctrace.log) - เลือก "เริ่มติดตามทันที"
- สร้างปัญหาซ้ํา
- เลือก "หยุดการติดตามทันที"