TripPin ส่วนที่ 1 - ตัวเชื่อมต่อข้อมูลสําหรับบริการ OData
บทช่วยสอนแบบหลายส่วนนี้ครอบคลุมการสร้างส่วนขยายแหล่งข้อมูลใหม่สําหรับ Power Query บทช่วยสอนมีไว้ให้ทําตามลําดับ —บทเรียนแต่ละบทจะสร้างขึ้นบนตัวเชื่อมต่อที่สร้างขึ้นในบทเรียนที่แล้ว โดยการเพิ่มความสามารถใหม่ให้กับตัวเชื่อมต่อของคุณแบบเพิ่มหน่วย
ในบทเรียนนี้ คุณจะ:
- สร้างโครงการ data เชื่อมต่อ or ใหม่โดยใช้ Power Query SDK
- เขียนฟังก์ชันพื้นฐานเพื่อดึงข้อมูลจากแหล่งข้อมูล
- ทดสอบตัวเชื่อมต่อของคุณใน Power Query SDK
- ลงทะเบียนตัวเชื่อมต่อของคุณใน Power BI Desktop
การสร้างตัวเชื่อมต่อ OData พื้นฐาน
ในส่วนนี้ คุณสร้างโครงการ Data เชื่อมต่อ or ใหม่ ใส่ข้อมูลพื้นฐานบางอย่าง และทดสอบใน Power Query SDK
เปิด Visual Studio Code เราขอแนะนําให้คุณสร้างพื้นที่ทํางานใหม่แล้วจึงสร้างโครงการส่วนขยายใหม่ หากต้องการสร้างโครงการส่วนขยายใหม่ให้เปิด explorer และในส่วน Power Query SDK เลือก ปุ่มสร้างโครงการ ส่วนขยาย
หลังจากเลือกปุ่มนี้ แล้วคุณจะได้รับพร้อมท์ให้ป้อนชื่อของโครงการใหม่ ตั้งชื่อโครงการ TripPin
ใหม่นี้
เปิดไฟล์ TripPin.pq และวางในข้อกําหนดของตัวเชื่อมต่อต่อไปนี้
section TripPin;
[DataSource.Kind="TripPin", Publish="TripPin.Publish"]
shared TripPin.Feed = Value.ReplaceType(TripPinImpl, type function (url as Uri.Type) as any);
TripPinImpl = (url as text) =>
let
source = OData.Feed(url)
in
source;
// Data Source Kind description
TripPin = [
Authentication = [
Anonymous = []
],
Label = "TripPin Part 1 - OData"
];
// Data Source UI publishing description
TripPin.Publish = [
Beta = true,
Category = "Other",
ButtonText = { "TripPin OData", "TripPin OData" }
];
ข้อกําหนดของตัวเชื่อมต่อนี้ประกอบด้วย:
- ระเบียนข้อกําหนดของแหล่งข้อมูลสําหรับตัวเชื่อมต่อ TripPin
- การประกาศที่โดยนัย (ไม่ระบุชื่อ) เป็นชนิดการรับรองความถูกต้องเดียวสําหรับแหล่งข้อมูลนี้
- ฟังก์ชัน (
TripPinImpl
) ที่มีการดําเนินการที่เรียกใช้ OData.Feed - ฟังก์ชันที่ใช้ร่วมกัน (
TripPin.Feed
) ที่ตั้งค่าชนิดพารามิเตอร์เป็นUri.Type
- ระเบียนการเผยแพร่แหล่งข้อมูลที่อนุญาตให้ตัวเชื่อมต่อปรากฏในกล่องโต้ตอบการรับข้อมูลของ Power Query
เปิดไฟล์ TripPin.query.pq แทนที่เนื้อหาปัจจุบันด้วยการโทรไปยังฟังก์ชันที่ส่งออกของคุณ
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
ก่อนที่คุณจะสามารถทดสอบตัวเชื่อมต่อของคุณ คุณต้องสร้างตัวเชื่อมต่อก่อน เมื่อต้องการทําเช่นนี้ไปที่เทอร์มินัลและเลือกตัวเลือกเรียกใช้งานสร้าง... (แป้นพิมพ์ลัด Ctrl + Shift + B) เราขอแนะนําให้เลือกตัวเลือก MakePQX แต่ตัวเลือกใดตัวเลือกหนึ่งที่พร้อมใช้งานในการสร้างควรใช้งานได้
ผลลัพธ์ของการดําเนินการนี้สร้างโฟลเดอร์ Bin ใหม่ซึ่งตัวเชื่อมต่อที่สร้างไว้ของคุณถูกจัดเก็บเป็น TripPin.mez
ไฟล์ <project.query.pq> ถูกใช้เพื่อทดสอบส่วนขยายของคุณโดยไม่ต้องปรับใช้กับโฟลเดอร์ถังขยะของ Power BI Desktop ของคุณ การใช้เครื่องมือที่พร้อมใช้งานภายใน Power Query SDK:
- เลือกตัวเลือกเพื่อ ตั้งค่าข้อมูลประจําตัว
- เลือก TripPin เป็นแหล่งข้อมูล
- เลือก ไฟล์ TripPin.query.pq เป็นไฟล์คิวรี/ทดสอบ
- เลือก แบบไม่ระบุชื่อ เป็นประเภทการรับรองความถูกต้อง
ในกล่องโต้ตอบผลลัพธ์ ข้อความจะปรากฏขึ้นเพื่อยืนยันว่าคุณได้ตั้งค่าข้อมูลประจําตัวสําหรับแหล่งข้อมูลและรายละเอียดสําหรับข้อมูลประจําตัวแต่ละรายการที่สร้างขึ้น
หมายเหตุ
คุณสามารถล้างข้อมูลประจําตัวได้เสมอโดยใช้ คําสั่ง ล้างข้อมูลประจําตัว ทั้งหมด หรือตรวจสอบข้อมูลประจําตัวที่พร้อมใช้งานโดยใช้ คําสั่ง รายการข้อมูลประจําตัว ภายในเครื่องมือ Power Query SDK
เมื่อข้อมูลประจําตัวเข้าที่แล้ว คุณเลือก ไฟล์ TripPin.query.pq และเลือกขวาในเอกสารเพื่อ ประเมินไฟล์ power query ปัจจุบัน หรือใช้ตัวเลือกเพื่อ ประเมินไฟล์ ปัจจุบัน จากเครื่องมือ Power Query SDK
กล่องโต้ตอบผลลัพธ์จะแสดงข้อความของผลลัพธ์จากการประเมินของคุณ เช่นเดียวกับหน้าต่างใหม่ที่มีชื่อ ผลลัพธ์ PQTest
หน้าต่าง ผลลัพธ์ PQTest ประกอบด้วยแท็บสามแท็บ:
- ผลลัพธ์: แสดงตัวอย่างของข้อมูลของคุณในตาราง
- สรุป: รายละเอียดการประเมินทั่วไป เช่น StartTime, EndTime, Duration, ไฟล์ที่ใช้สําหรับการประเมิน สถานะ และอื่น ๆ
- DataSource: ให้ข้อมูลเกี่ยวกับแหล่งข้อมูลที่ใช้จาก Kind, ชื่อฟังก์ชัน และเส้นทาง
คุณสามารถลองใช้ URL ของ OData ที่แตกต่างกันสองสามตัวในไฟล์ทดสอบเพื่อดูว่าผลลัพธ์ที่แตกต่างกันถูกส่งกลับอย่างไร ตัวอย่างเช่น:
https://services.odata.org/v4/TripPinService/Me
https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
https://services.odata.org/v4/TripPinService/People
ไฟล์ TripPin.query.pq สามารถประกอบด้วยคําสั่งเดียว คําสั่ง let หรือเอกสารส่วนแบบเต็ม
let
Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
People = Source{[Name="People"]}[Data],
SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
SelectColumns
สำคัญ
ตรวจสอบให้แน่ใจว่าได้บันทึกไฟล์ของคุณเมื่อคุณทํางานเสมอ หากคุณทําการเปลี่ยนแปลงไฟล์ TripPin.pq คุณควรทริกเกอร์งานบิลต์ที่ตามมาเสมอเพื่อให้แน่ใจว่าคุณกําลังทดสอบกับตัวเชื่อมต่อเวอร์ชันล่าสุดของคุณ
เปิด Fiddler เพื่อจับภาพปริมาณการใช้งาน HTTP และเรียกใช้คิวรี คุณควรเห็นคําขอที่แตกต่างกันสองสามข้อสําหรับ services.odata.org ซึ่งสร้างขึ้นโดยกระบวนการคอนเทนเนอร์ Mashup คุณจะเห็นว่าการเข้าถึง URL รากของบริการส่งผลให้มีสถานะ 302 และเปลี่ยนเส้นทางไปยัง URL เวอร์ชันที่ยาวกว่า การเปลี่ยนเส้นทางต่อไปนี้เป็นลักษณะการทํางานอื่นที่คุณได้รับ "ฟรี" จากฟังก์ชันไลบรารีพื้นฐาน
สิ่งหนึ่งที่ต้องทราบถ้าคุณดู URL คือคุณสามารถดู Query Folding ที่เกิดขึ้นกับ SelectColumns
คําสั่งได้
https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName
ถ้าคุณเพิ่มการแปลงเพิ่มเติมลงในคิวรีของคุณ คุณสามารถดูผลกระทบของ URL ที่สร้างขึ้นได้
ลักษณะการทํางานนี้เป็นสิ่งสําคัญที่จะต้องทราบ แม้ว่าคุณไม่ได้ใช้ตรรกะการพับอย่างชัดเจน แต่ตัวเชื่อมต่อของคุณสืบทอดความสามารถเหล่านี้จากฟังก์ชัน OData.Feed คําสั่ง M เป็นแบบเขียนได้—บริบทตัวกรองจะโฟลว์จากฟังก์ชันหนึ่งไปยังอีกฟังก์ชันหนึ่งเมื่อใดก็ตามที่เป็นไปได้ ซึ่งคล้ายกับแนวคิดของวิธีที่ฟังก์ชันแหล่งข้อมูลใช้ภายในตัวเชื่อมต่อของคุณสืบทอดบริบทการรับรองความถูกต้องและข้อมูลประจําตัวของพวกเขา ในบทเรียนต่อๆ ไป คุณจะแทนที่การใช้ OData.Feed ซึ่งมีความสามารถในการพับแบบเนทีฟ ด้วย Web.Contents ซึ่งไม่เปลี่ยนแปลง หากต้องการรับความสามารถระดับเดียวกัน คุณจะต้องใช้ Table.View
อินเทอร์เฟซและใช้ตรรกะการพับที่ชัดเจนของคุณเอง
การโหลดส่วนขยายของคุณใน Power BI Desktop
หากต้องการใช้ส่วนขยายของคุณใน Power BI Desktop คุณจะต้องคัดลอกไฟล์ผลลัพธ์ของโครงการตัวเชื่อมต่อ (TripPin.mez) ไปยังไดเรกทอรี เชื่อมต่อ ors แบบกําหนดเองของคุณ
- สร้างไดเรกทอรี [My Documents]\Power BI Desktop\Custom เชื่อมต่อ ors
- คัดลอกไฟล์นามสกุล (TripPin.mez) ลงในไดเรกทอรีนี้
- เลือกตัวเลือก (ไม่แนะนํา) อนุญาตให้โหลดส่วนขยายใด ๆ โดยไม่มีการตรวจสอบหรือคําเตือนใน Power BI Desktop (ภายใต้ตัวเลือกไฟล์>และการตั้งค่า>ตัวเลือก>ส่วนขยายข้อมูลความปลอดภัย)>
- รีสตาร์ต Power BI Desktop
- เลือกรับข้อมูล>เพิ่มเติมเพื่อแสดงกล่องโต้ตอบรับข้อมูล
คุณสามารถค้นหาส่วนขยายของคุณได้โดยการพิมพ์ชื่อลงในกล่องค้นหา
เลือกชื่อฟังก์ชัน และเลือกเชื่อมต่อ ข้อความของบุคคลที่สามปรากฏขึ้น —เลือก ดําเนินการต่อ เพื่อดําเนินการต่อ ขณะนี้ กล่องโต้ตอบการเรียกฟังก์ชันปรากฏขึ้น ใส่ URL รากของบริการ (https://services.odata.org/v4/TripPinService/
) และเลือก ตกลง
เนื่องจากนี่เป็นครั้งแรกที่คุณกําลังเข้าถึงแหล่งข้อมูลนี้ คุณจะได้รับพร้อมท์สําหรับข้อมูลประจําตัว ตรวจสอบว่าได้เลือก URL ที่สั้นที่สุดแล้ว จากนั้นเลือกเชื่อมต่อ
โปรดสังเกตว่าแทนที่จะรับตารางข้อมูลอย่างง่าย ตัวนําทางจะปรากฏขึ้น ทั้งนี้เนื่องจาก ฟังก์ชัน OData.Feed ส่งกลับตารางที่มีเมตาดาต้าพิเศษอยู่ด้านบนที่ประสบการณ์การใช้งาน Power Query รู้ว่าจะแสดงเป็นตารางนําทาง การฝึกปฏิบัตินี้จะครอบคลุมวิธีการที่คุณสามารถสร้างและกําหนดตารางการนําทางของคุณเองในบทเรียนในอนาคต
เลือกตาราง ฉัน จากนั้นเลือก แปลงข้อมูล โปรดสังเกตว่าคอลัมน์มีชนิดที่กําหนดอยู่แล้ว (ส่วนใหญ่) นี่เป็นอีกหนึ่งคุณลักษณะของ ฟังก์ชัน OData.Feed พื้นฐาน ถ้าคุณดูคําขอใน Fiddler คุณจะเห็นว่า คุณได้ดึงข้อมูลเอกสาร$metadata ของบริการแล้ว การดําเนินการ OData ของเครื่องยนต์ทําสิ่งนี้โดยอัตโนมัติเพื่อกําหนด Schema ชนิดข้อมูล และความสัมพันธ์ของบริการ
บทสรุป
บทเรียนนี้จะแนะนําคุณผ่านการสร้างตัวเชื่อมต่ออย่างง่ายตามฟังก์ชันไลบรารี OData.Feed ตามที่คุณเห็น ตรรกะเล็ก ๆ น้อย ๆ จําเป็นสําหรับการเปิดใช้งานตัวเชื่อมต่อที่ทํางานอย่างสมบูรณ์ผ่าน OData
ฟังก์ชันพื้นฐาน ฟังก์ชันที่เปิดใช้งานความสามารถในการเพิ่มอื่น ๆ เช่น ODBC DataSource มีความสามารถที่คล้ายกัน
ในบทเรียนถัดไป คุณจะแทนที่การใช้ OData.Feed ด้วยฟังก์ชันที่มีความสามารถน้อยกว่า ได้แก่ Web.Contents บทเรียนแต่ละบทเรียนใช้คุณลักษณะตัวเชื่อมต่อเพิ่มเติม รวมถึงการแบ่งหน้า เมตาดาต้า/การตรวจหา schema และการพับคิวรีไปยังไวยากรณ์คิวรี OData จนกว่าตัวเชื่อมต่อแบบกําหนดเองของคุณสนับสนุนช่วงเดียวกันของความสามารถเช่น OData.Feed