TripPin ส่วนที่ 1 - ตัวเชื่อมต่อข้อมูลสําหรับบริการ OData

บทช่วยสอนแบบหลายส่วนนี้ครอบคลุมการสร้างส่วนขยายแหล่งข้อมูลใหม่สําหรับ Power Query บทช่วยสอนมีไว้ให้ทําตามลําดับ —บทเรียนแต่ละบทจะสร้างขึ้นบนตัวเชื่อมต่อที่สร้างขึ้นในบทเรียนที่แล้ว โดยการเพิ่มความสามารถใหม่ให้กับตัวเชื่อมต่อของคุณแบบเพิ่มหน่วย

ในบทเรียนนี้ คุณจะ:

  • สร้างโครงการ data เชื่อมต่อ or ใหม่โดยใช้ Visual Studio SDK
  • เขียนฟังก์ชันพื้นฐานเพื่อดึงข้อมูลจากแหล่งข้อมูล
  • ทดสอบตัวเชื่อมต่อของคุณใน Visual Studio
  • ลงทะเบียนตัวเชื่อมต่อของคุณใน Power BI Desktop

การสร้างตัวเชื่อมต่อ OData พื้นฐาน

ในส่วนนี้ คุณจะสร้างโครงการ Data เชื่อมต่อ or ใหม่ ใส่ข้อมูลพื้นฐานบางอย่าง และทดสอบใน Visual Studio

เปิด Visual Studio และสร้างโครงการใหม่ ภายใต้โฟลเดอร์ Power Query ให้เลือกโครงการ เชื่อมต่อ or ข้อมูล สําหรับตัวอย่างนี้ ให้ตั้งค่าชื่อโครงการเป็นTripPin

VSProject.

เปิดไฟล์ 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 BI

เปิดไฟล์ TripPin.query.pq แทนที่เนื้อหาปัจจุบันด้วยการโทรไปยังฟังก์ชันที่ส่งออกของคุณ

TripPin.Feed("https://services.odata.org/v4/TripPinService/")

เลือก ปุ่มเริ่ม เพื่อเปิดใช้อรรถประโยชน์คิวรี M

ไฟล์ <project.query.pq> ถูกใช้เพื่อทดสอบส่วนขยายของคุณโดยไม่ต้องปรับใช้กับโฟลเดอร์ถังขยะของ Power BI Desktop ของคุณ การเลือก ปุ่มเริ่ม (หรือกด F5) จะคอมไพล์ส่วนขยายของคุณโดยอัตโนมัติและเปิดใช้ยูทิลิตี้ M Query

การเรียกใช้คิวรีของคุณเป็นครั้งแรกจะส่งผลให้เกิดข้อผิดพลาดข้อมูลประจําตัว ใน Power Query แอปพลิเคชันที่โฮสต์จะแปลงข้อผิดพลาดนี้เป็นพร้อมท์ข้อมูลประจําตัว ใน Visual Studio คุณจะได้รับพร้อมท์ที่คล้ายกันที่เรียกใช้ว่าแหล่งข้อมูลใดไม่มีข้อมูลประจําตัวและเส้นทางแหล่งข้อมูล เลือกเส้นทางที่สั้นที่สุดของแหล่งข้อมูล (https://services.odata.org/) ซึ่งจะนําข้อมูลประจําตัวของคุณไปใช้กับ URL ทั้งหมดภายใต้เส้นทางนี้

เลือกชนิดข้อมูลประจําตัวแบบไม่ระบุชื่อ จากนั้นเลือก ตั้งค่าข้อมูลประจําตัว

Image of M Query Output dialog, with the Errors tab selected, and the Data Source Path filled in and the Credential Type set to Anonymous.

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

Query results.

คุณสามารถลองใช้ 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

เปิด 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 แบบกําหนดเองของคุณ

  1. ใน Visual Studio ให้เลือก สร้าง | สร้าง สร้างโซลูชัน (F6) จากแถบเมนู ซึ่งจะสร้างไฟล์ .mez สําหรับคุณโครงการ ตามค่าเริ่มต้น การดําเนินการนี้จะอยู่ในโฟลเดอร์ bin\Debug ของโครงการของคุณ
  2. สร้าง [My Documents]\Power BI Desktop\Custom Connectors ไดเรกทอรี
  3. คัดลอกไฟล์ส่วนขยายลงในไดเรกทอรีนี้
  4. เลือกตัวเลือก (ไม่แนะนํา) อนุญาตให้โหลดส่วนขยายใด ๆ โดยไม่มีการตรวจสอบหรือคําเตือนใน Power BI Desktop (ภายใต้ตัวเลือกไฟล์>และการตั้งค่า>ตัวเลือก>ส่วนขยายข้อมูลความปลอดภัย)>
  5. รีสตาร์ต Power BI Desktop
  6. เลือกรับข้อมูล>เพิ่มเติมเพื่อแสดงกล่องโต้ตอบรับข้อมูล

คุณสามารถค้นหาส่วนขยายของคุณได้โดยการพิมพ์ชื่อลงในกล่องค้นหา

Get Data Dialog.

เลือกชื่อฟังก์ชัน และเลือกเชื่อมต่อ ข้อความของบุคคลที่สามปรากฏขึ้น —เลือก ดําเนินการต่อ เพื่อดําเนินการต่อ ขณะนี้ กล่องโต้ตอบการเรียกฟังก์ชันปรากฏขึ้น ใส่ URL รากของบริการ (https://services.odata.org/v4/TripPinService/) และเลือก ตกลง

Invoke Function.

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

Image of credential prompt set to Anonymous and the level setting set to the shortest URL.

โปรดสังเกตว่าแทนที่จะรับตารางข้อมูลอย่างง่าย ตัวนําทางจะปรากฏขึ้น ทั้งนี้เนื่องจาก ฟังก์ชัน OData.Feed ส่งกลับตารางที่มีเมตาดาต้าพิเศษอยู่ด้านบนที่ประสบการณ์การใช้งาน Power Query รู้ว่าจะแสดงเป็นตารางนําทาง การฝึกปฏิบัตินี้จะครอบคลุมวิธีการที่คุณสามารถสร้างและกําหนดตารางการนําทางของคุณเองในบทเรียนในอนาคต

Nav Table.

เลือกตาราง ฉัน จากนั้นเลือก แปลงข้อมูล โปรดสังเกตว่าคอลัมน์มีชนิดที่กําหนดอยู่แล้ว (ส่วนใหญ่) นี่เป็นอีกหนึ่งคุณลักษณะของ ฟังก์ชัน OData.Feed พื้นฐาน ถ้าคุณดูคําขอใน Fiddler คุณจะเห็นว่า คุณได้ดึงข้อมูลเอกสาร$metadata ของบริการแล้ว การดําเนินการ OData ของเครื่องยนต์ทําสิ่งนี้โดยอัตโนมัติเพื่อกําหนด Schema ชนิดข้อมูล และความสัมพันธ์ของบริการ

Me Record.

บทสรุป

บทเรียนนี้จะแนะนําคุณผ่านการสร้างตัวเชื่อมต่ออย่างง่ายตามฟังก์ชันไลบรารี OData.Feed ตามที่คุณเห็น ตรรกะน้อยมากจําเป็นสําหรับการเปิดใช้งานตัวเชื่อมต่อที่ทํางานอย่างสมบูรณ์ผ่าน OData ฟังก์ชันพื้นฐาน ฟังก์ชันที่เปิดใช้งานความสามารถในการเพิ่มอื่น ๆ เช่น ODBC DataSource มีความสามารถที่คล้ายกัน

ในบทเรียนถัดไป คุณจะแทนที่การใช้ OData.Feed ด้วยฟังก์ชันที่มีความสามารถน้อยกว่า ได้แก่ Web.Contents บทเรียนแต่ละบทจะใช้คุณลักษณะตัวเชื่อมต่อเพิ่มเติม รวมถึงการแบ่งหน้า เมตาดาต้า/การตรวจหา Schema และการพับคิวรีไปยังไวยากรณ์คิวรี OData จนกว่าตัวเชื่อมต่อแบบกําหนดเองของคุณสนับสนุนช่วงเดียวกันของความสามารถเช่น OData.Feed

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

TripPin ส่วนที่ 2 - เชื่อมต่อหรือข้อมูลสําหรับบริการ REST