การจัดการเส้นทางแหล่งข้อมูล
โปรแกรม M ระบุแหล่งข้อมูลโดยใช้การรวมกันของชนิดและเส้นทาง เมื่อพบแหล่งข้อมูลในระหว่างการประเมินผลคิวรี กลไก M จะพยายามค้นหาข้อมูลประจําตัวที่ตรงกัน ถ้าไม่พบข้อมูลประจําตัว กลไกจัดการส่งกลับข้อผิดพลาดพิเศษที่ส่งผลให้มีการแจ้งข้อมูลประจําตัวใน Power Query
ค่า Kind มาจาก ข้อกําหนดชนิด แหล่งข้อมูล
ค่า Path มาจากพารามิเตอร์ที่จําเป็นของฟังก์ชันแหล่งข้อมูลของคุณ พารามิเตอร์ที่เลือกได้ไม่ได้แยกปัจจัยลงในตัวระบุเส้นทางแหล่งข้อมูล ด้วยเหตุนี้ ฟังก์ชันแหล่งข้อมูลทั้งหมดที่เกี่ยวข้องกับชนิดแหล่งข้อมูลต้องมีพารามิเตอร์เดียวกัน มีการจัดการพิเศษสําหรับฟังก์ชันที่มีพารามิเตอร์ชนิด Uri.Type
เดียว ไปที่ ฟังก์ชัน ด้วยพารามิเตอร์ Uri สําหรับรายละเอียด
คุณสามารถดูตัวอย่างของวิธีการจัดเก็บข้อมูลประจําตัวไว้ ในกล่องโต้ตอบการตั้งค่า แหล่งข้อมูลใน Power BI Desktop ในกล่องโต้ตอบนี้ ชนิด จะแสดงด้วยไอคอน และค่าเส้นทางจะแสดงเป็นข้อความ
หมายเหตุ
ถ้าคุณเปลี่ยนพารามิเตอร์ที่จําเป็นของฟังก์ชันแหล่งข้อมูลของคุณในระหว่างการพัฒนา ข้อมูลประจําตัวที่เก็บไว้ก่อนหน้านี้จะไม่ทํางานอีกต่อไป (เนื่องจากค่าเส้นทางไม่ตรงกันอีกต่อไป) คุณควรลบข้อมูลประจําตัวที่จัดเก็บไว้ทุกครั้งที่คุณเปลี่ยนพารามิเตอร์ฟังก์ชันแหล่งข้อมูลของคุณ ถ้าพบข้อมูลประจําตัวที่เข้ากันไม่ได้ คุณอาจได้รับข้อผิดพลาดขณะทํางาน
รูปแบบเส้นทางของแหล่งข้อมูล
ค่า Path สําหรับแหล่งข้อมูลมาจากพารามิเตอร์ที่จําเป็นของฟังก์ชันแหล่งข้อมูล สามารถแยกพารามิเตอร์ที่จําเป็นออกจากเส้นทางได้โดยการเพิ่ม DataSource.Path = false
ไปยังเมตาดาต้าของฟังก์ชัน สําหรับข้อมูลเพิ่มเติม ไปที่ ยกเว้นพารามิเตอร์ที่จําเป็นจากเส้นทางแหล่งข้อมูลของคุณ
ตามค่าเริ่มต้น คุณสามารถดูค่า สตริงจริงในกล่องโต้ตอบการตั้งค่า แหล่งข้อมูลใน Power BI Desktop และในพร้อมท์ข้อมูลประจําตัว ถ้าข้อกําหนดประเภทแหล่งข้อมูลมีค่า Label
คุณจะเห็นค่าป้ายชื่อแทน
ตัวอย่างเช่น ฟังก์ชันแหล่งข้อมูลใน ตัวอย่าง HelloWorldWithDocs มีลายเซ็นต่อไปนี้:
HelloWorldWithDocs.Contents = (message as text, optional count as number) as table => ...
ฟังก์ชันมีพารามิเตอร์เดียวที่จําเป็น (message
) ของชนิด text
และ ใช้ในการคํานวณเส้นทางแหล่งข้อมูล พารามิเตอร์ที่เลือกได้ (count
) จะถูกละเว้น เส้นทางจะแสดงดังต่อไปนี้:
พร้อมท์ข้อมูลประจําตัว
UI การตั้งค่าแหล่งข้อมูล
เมื่อมีการกําหนดค่าป้ายชื่อ ค่าพาธของแหล่งข้อมูลจะไม่แสดง:
หมายเหตุ
ขณะนี้เราขอแนะนําว่าคุณ อย่า รวมป้ายชื่อสําหรับแหล่งข้อมูลของคุณหากฟังก์ชันของคุณมีพารามิเตอร์ที่จําเป็น เนื่องจากผู้ใช้จะไม่สามารถแยกความแตกต่างระหว่างข้อมูลประจําตัวต่างๆ ที่ป้อนไว้ได้ เราหวังว่าจะปรับปรุงสิ่งนี้ในอนาคต (นั่นคือการอนุญาตให้ตัวเชื่อมต่อข้อมูลแสดงเส้นทางของแหล่งข้อมูลแบบกําหนดเองของพวกเขาเอง)
ไม่รวมพารามิเตอร์ที่จําเป็นจากเส้นทางแหล่งข้อมูลของคุณ
ถ้าคุณต้องการกําหนดพารามิเตอร์ฟังก์ชัน แต่ไม่จําเป็นต้องรวมไว้เป็นส่วนหนึ่งของเส้นทางแหล่งข้อมูลของคุณ คุณสามารถเพิ่ม DataSource.Path = false
เมตาดาต้าในเอกสารฟังก์ชัน สามารถเพิ่มคุณสมบัตินี้ไปยังพารามิเตอร์อย่างน้อยหนึ่งตัวสําหรับฟังก์ชันของคุณ เขตข้อมูลนี้จะลบค่าจากเส้นทางแหล่งข้อมูลของคุณ (หมายความว่าจะไม่มีการส่งผ่านไปยังฟังก์ชันของคุณ TestConnection
อีกต่อไป) ดังนั้นจึงควรใช้สําหรับพารามิเตอร์ที่ไม่จําเป็นในการระบุแหล่งข้อมูลของคุณ หรือแยกความแตกต่างระหว่างข้อมูลประจําตัวของผู้ใช้เท่านั้น
ตัวอย่างเช่น ตัวเชื่อมต่อในตัวอย่าง HelloWorldWithDocs จําเป็นต้องมีข้อมูลประจําตัวที่แตกต่างกันสําหรับค่าที่แตกต่างกันmessage
message
การเพิ่มDataSource.Path = false
พารามิเตอร์จะลบออกจากการคํานวณเส้นทางแหล่งข้อมูล ทําให้ตัวเชื่อมต่อเป็น "singleton" อย่างมีประสิทธิภาพ การเรียก HelloWorldWithDocs.Contents
ทั้งหมดจะถือว่าเป็นแหล่งข้อมูลเดียวกัน และผู้ใช้มีข้อมูลประจําตัวเพียงครั้งเดียว
HelloWorldType = type function (
message as (type text meta [
DataSource.Path = false,
Documentation.FieldCaption = "Message",
Documentation.FieldDescription = "Text to display",
Documentation.SampleValues = {"Hello world", "Hola mundo"}
]),
optional count as (type number meta [
Documentation.FieldCaption = "Count",
Documentation.FieldDescription = "Number of times to repeat the message",
Documentation.AllowedValues = { 1, 2, 3 }
]))
as table meta [
Documentation.Name = "Hello - Name",
Documentation.LongDescription = "Hello - Long Description",
Documentation.Examples = {[
Description = "Returns a table with 'Hello world' repeated 2 times",
Code = "HelloWorldWithDocs.Contents(""Hello world"", 2)",
Result = "#table({""Column1""}, {{""Hello world""}, {""Hello world""}})"
],[
Description = "Another example, new message, new count!",
Code = "HelloWorldWithDocs.Contents(""Goodbye"", 1)",
Result = "#table({""Column1""}, {{""Goodbye""}})"
]}
];
ฟังก์ชันที่มีพารามิเตอร์ Uri
เนื่องจากแหล่งข้อมูลที่มีตัวระบุตาม Uri เป็นเรื่องปกติ จึงมีการจัดการพิเศษใน Power Query UI เมื่อจัดการกับเส้นทางแหล่งข้อมูลที่ใช้ Uri เมื่อพบแหล่งข้อมูลที่ใช้ Uri กล่องโต้ตอบข้อมูลประจําตัวจะมีดรอปดาวน์ ซึ่งช่วยให้ผู้ใช้สามารถเลือกเส้นทางพื้นฐานแทนที่จะเป็นเส้นทางแบบเต็ม (และเส้นทางทั้งหมดในระหว่าง)
เนื่องจากUri.Type
เป็นชนิดโดยกําเนิดแทนที่จะเป็นชนิดแรกเริ่มในภาษา M คุณจะต้องใช้ฟังก์ชัน Value.ReplaceType เพื่อระบุว่าพารามิเตอร์ข้อความของคุณควรถือว่าเป็น Uri
shared GithubSample.Contents = Value.ReplaceType(Github.Contents, type function (url as Uri.type) as any);