แชร์ผ่าน


เรียกดูเนื้อหาไฟล์โดยใช้ฟังก์ชัน OPENROWSET

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

ฟังก์ชัน OPENROWSET ช่วยให้คุณสามารถอ่านเนื้อหาของไฟล์ Parquet หรือ CSV และส่งกลับข้อมูลเป็นชุดของแถว ไฟล์สามารถจัดเก็บไว้ใน Azure Blob Storage, Azure Data Lake Storage หรือ Fabric OneLake

Important

การอ่านไฟล์จากที่เก็บข้อมูล Fabric OneLake โดยใช้ฟังก์ชัน OPENROWSET อยู่ในการแสดงตัวอย่าง

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

เมื่อคุณทําความเข้าใจข้อมูลของคุณ คุณสามารถสร้างตารางที่จะใช้ในการจัดเก็บเนื้อหาไฟล์ที่นําเข้าได้

เรียกดูไฟล์ Parquet โดยใช้ฟังก์ชัน OPENROWSET

ในตัวอย่างแรก เราตรวจสอบข้อมูลจากแหล่งที่มาของ Parquet

ใช้โค้ดต่อไปนี้เพื่ออ่านข้อมูลตัวอย่างจากไฟล์โดยใช้ฟังก์ชัน OPENROWSET(BULK) กับแหล่งที่มา Parquet:

SELECT TOP 10 * 
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data

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

ไม่จําเป็นต้องมีรายละเอียดการรับรองความถูกต้อง

คุณไม่จําเป็นต้องระบุตัวเลือก FORMAT เนื่องจากฟังก์ชัน OPENROWSET สันนิษฐานว่าคุณกําลังอ่านรูปแบบ Parquet ตามนามสกุลไฟล์ .parquet ใน URI

เรียกดูไฟล์ CSV โดยใช้ฟังก์ชัน OPENROWSET

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

SELECT TOP 10 * 
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv') AS data

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

คุณไม่จําเป็นต้องระบุ FORMAT ตัวเลือก เนื่องจากฟังก์ชันจะ OPENROWSET ถือว่าคุณกําลังอ่าน CSV รูปแบบตาม .csv นามสกุลไฟล์ใน URI

Note

ในผลลัพธ์ คุณอาจสังเกตเห็นว่าแถวแรกในไฟล์นี้มีชื่อคอลัมน์แทนข้อมูล ในกรณีนี้ คุณจะต้องปรับเปลี่ยนคิวรีโดยใช้ตัวเลือก HEADER_ROW เพื่อข้ามแถวและใช้เฉพาะสําหรับชื่อคอลัมน์เท่านั้น นี่คือส่วนหนึ่งของกระบวนการสํารวจข้อมูล ขณะที่คุณค่อยๆ ปรับไฟล์จนกว่าจะตรงกับข้อมูลพื้นฐาน

เรียกดูไฟล์ JSONL โดยใช้ฟังก์ชัน OPENROWSET

ฟังก์ชันนี้ OPENROWSET(BULK) ช่วยให้คุณสามารถเรียกดูไฟล์ JSON ในรูปแบบที่คั่นด้วยบรรทัด:

SELECT TOP 10 * 
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.jsonl') AS data

หากไฟล์มีข้อความที่คั่นด้วยบรรทัดโดยที่แต่ละบรรทัดแสดงถึงเอกสาร JSON ที่ถูกต้อง สามารถใช้ฟังก์ชันเพื่อ OPENROWSET อ่านได้โดยตรง

คุณไม่จําเป็นต้องระบุ FORMAT ตัวเลือกอย่างชัดเจน จะ OPENROWSET อนุมานรูปแบบ JSONL โดยอัตโนมัติตามนามสกุลไฟล์ทั่วไป เช่น .jsonl, หรือ .ldjsonใน .ndjson URI อย่างไรก็ตาม หากคุณใช้นามสกุลไฟล์อื่นสําหรับรูปแบบนี้ คุณต้องระบุ FORMAT = 'jsonl' เพื่อให้แน่ใจว่ามีการแยกวิเคราะห์ที่ถูกต้อง

อ่านไฟล์ใน Fabric OneLake

ฟังก์ชันนี้ OPENROWSET(BULK) ช่วยให้คุณสามารถอ่านไฟล์ที่จัดเก็บไว้ใน Fabric OneLake หากไฟล์ของคุณถูกเก็บไว้ในส่วนไฟล์ของเลคเฮาส์คุณสามารถอ่านไฟล์นี้ได้โดยใช้ไวยากรณ์การกรอกข้อมูล:

SELECT TOP 10 * 
FROM OPENROWSET(BULK 'https://onelake.dfs.fabric.microsoft.com/<workspaceId>/<lakehouseId>/Files/latest/bing_covid-19_data.jsonl') AS data

แทนที่ <workspaceId> และ ด้วย <lakehouseId> GUID พื้นที่ทํางานและเลคเฮาส์ที่คุณสามารถพบได้ใน URI พื้นที่ทํางาน Fabric ตรวจสอบให้แน่ใจว่าคุณกําลังอ้างอิงไฟล์ในส่วน /Files ของเลคเฮาส์

Important

การอ่านไฟล์จากที่เก็บข้อมูล Fabric OneLake โดยใช้ฟังก์ชัน OPENROWSET อยู่ในการแสดงตัวอย่าง ดูข้อจํากัดที่ใช้ได้กับทั้งและCOPY INTOOPENROWSET(BULK)

อ่านไฟล์ข้อความแบบกําหนดเอง

ฟังก์ชันนี้ OPENROWSET(BULK) ช่วยให้คุณสามารถกําหนดตัวเลือกต่างๆ สําหรับการอ่านไฟล์ข้อความที่กําหนดเอง

ตัวอย่างเช่น คุณสามารถระบุค่าสําหรับ ROWTERMINATOR และ FIELDTERMINATOR เพื่อระบุรูปแบบไฟล์พื้นฐาน

select *
from OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv',
                FORMAT='CSV',
                HEADER_ROW=True,
                ROWTERMINATOR='\n',
                FIELDTERMINATOR=','
) AS data

ในตัวอย่างนี้ เราระบุอย่างชัดเจนว่าเรากําลังอ่านไฟล์ในรูปแบบ CSV โดยที่แต่ละแถวจะถูกคั่นด้วยบรรทัดใหม่ และแต่ละฟิลด์จะถูกคั่นด้วยเครื่องหมายจุลภาค แถวแรกมีส่วนหัว ซึ่งจะใช้สําหรับชื่อคอลัมน์

สํารวจเมตาดาต้าของคอลัมน์

ด้วยฟังก์ชัน OPENROWSET คุณสามารถดูคอลัมน์ไฟล์และชนิดของไฟล์ได้อย่างง่ายดายโดยการรวมคิวรีที่อ่านข้อมูลตัวอย่างด้วยขั้นตอน sp_describe_first_result_set:

EXEC sp_describe_first_result_set 
N'SELECT TOP 0 * 
FROM OPENROWSET(BULK ''https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet'') AS data';

ในตัวอย่างนี้ กระบวนงานจะ sp_describe_first_result_set ดําเนินการแบบสอบถามด้วย OPENROWSET ฟังก์ชัน ซึ่งไม่ส่งคืนแถวใดๆ

จากนั้นจะใช้ Schema ของคอลัมน์จากคิวรีภายในนี้และส่งกลับ Schema ของคอลัมน์ซึ่งเป็นผลลัพธ์ของกระบวนการ

คุณสามารถใช้ schema คอลัมน์นี้เพื่อกําหนดโครงสร้างของตารางปลายทางในคําสั่งที่คุณ CREATE TABLE นําเข้าข้อมูลของคุณ อีกทางเลือกหนึ่ง คุณสามารถใช้ผลลัพธ์เหล่านี้เพื่อระบุชนิดที่แม่นยํายิ่งขึ้นสําหรับผลลัพธ์ของ OPENROWSET ฟังก์ชัน ดังที่แสดงในตัวอย่างต่อไปนี้

ระบุสคีมาของฟังก์ชัน OPENROWSET

ฟังก์ชัน OPENROWSET(BULK) ส่งกลับชนิดคอลัมน์โดยประมาณโดยยึดตามตัวอย่างของข้อมูล

หากตัวอย่างไม่เป็นตัวแทน คุณอาจได้รับประเภทหรือขนาดที่ไม่คาดคิด

ถ้าคุณทราบชนิดคอลัมน์ในไฟล์ของคุณ คุณสามารถกําหนด Schema ของคอลัมน์ได้อย่างชัดเจนโดยใช้ส่วนคําสั่ง WITH:

SELECT TOP 10 * 
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv') AS data
WITH (updated date,
      load_time datetime2,
      deaths_change smallint,
      id int,
      confirmed int,
      confirmed_change int,
      deaths int,
      recovered int,
      recovered_change int,
      latitude float,
      longitude float,
      iso2 varchar(8000),
      iso3 varchar(8000),
      country_region varchar(8000),
      admin_region_1 varchar(8000),
      iso_subdivision varchar(8000),
      admin_region_2 varchar(8000)
) AS data;

แทนที่จะคาดเดาชนิดคอลัมน์ ฟังก์ชัน OPENROWSET(BULK) จะกําหนดชนิดที่ระบุไว้ในคําสั่ง WITH อย่างชัดเจน

ด้วยวิธีนี้ คุณสามารถกําหนดชนิดที่แม่นยํามากขึ้น ซึ่งสามารถปรับปรุงประสิทธิภาพของคิวรีของคุณได้

ขั้นตอนถัดไป

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