หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Note
บทความนี้มุ่งเน้นไปที่สถาปัตยกรรมโซลูชันจาก สถาปัตยกรรมโซลูชัน CI/CD และ ALM (Application Lifecycle Management) สําหรับ Dataflow Gen2 ที่อาศัย การรวมไลบรารีตัวแปร และใช้ได้กับ Dataflow Gen2 ที่มีการสนับสนุน CI/CD เท่านั้น
ไลบรารีตัวแปรแฟบริกใน Dataflow Gen2 เปิดใช้งานการจัดการการกําหนดค่าแบบรวมศูนย์ที่นํากลับมาใช้ใหม่ได้ในสภาพแวดล้อมต่างๆ ด้วยการอ้างอิงตัวแปรโดยตรงในสคริปต์กระแสข้อมูลของคุณ คุณสามารถปรับลักษณะการทํางานแบบไดนามิกโดยไม่ต้องใช้ค่าฮาร์ดโค้ด ซึ่งเหมาะสําหรับเวิร์กโฟลว์ CI/CD การผสานรวมนี้ช่วยลดความยุ่งยากในการปรับใช้ข้ามขั้นตอนโดยอนุญาตให้แทรกค่าเฉพาะพื้นที่ทํางาน (เช่น Lakehouse หรือ Workspace ID) ในขณะรันไทม์ ทําให้กระแสข้อมูลของคุณปรับเปลี่ยนและบํารุงรักษาได้มากขึ้น
บทช่วยสอนนี้จะแนะนําคุณเกี่ยวกับโซลูชันตัวอย่างที่ใช้การอ้างอิงตัวแปรในกระแสข้อมูล และแสดงวิธีการ:
- ตั้งค่าตัวแปร: การใช้ไลบรารีตัวแปร Fabric และประเภทข้อมูลที่แตกต่างกัน
- แหล่งที่มาที่ขับเคลื่อนด้วยตัวแปร: การใช้ Lakehouse ที่มีชุดข้อมูลตัวอย่าง WideWorldImpoters เป็นแหล่งข้อมูล
- ตรรกะที่ขับเคลื่อนด้วยตัวแปร: การใช้วิดเจ็ตอินพุตที่พร้อมใช้งานตลอดประสบการณ์กระแสข้อมูล
- ปลายทางที่ขับเคลื่อนด้วยตัวแปร: การใช้คลังสินค้าเป็นปลายทาง
Note
แนวคิดที่แสดงในบทความนี้เป็นสากลสําหรับ Dataflow Gen2 และใช้ได้กับแหล่งข้อมูลและปลายทางอื่นๆ นอกเหนือจากที่แสดงไว้ที่นี่
สถานการณ์สมมติ
กระแสข้อมูลที่ใช้ในสถานการณ์นี้เรียบง่าย แต่หลักการหลักที่อธิบายไว้ใช้กับกระแสข้อมูลทุกประเภท มันเชื่อมต่อกับตารางที่ชื่อ dimension_city จากชุดข้อมูลตัวอย่าง Wide World Importers ที่จัดเก็บไว้ใน Lakehouse กรองแถวที่คอลัมน์ SalesTerritory เท่ากับ ตะวันออกเฉียงใต้ และโหลดผลลัพธ์ลงในตารางใหม่ที่เรียกว่า เมืองในคลังสินค้า ส่วนประกอบทั้งหมด - เลคเฮาส์ คลังสินค้า และกระแสข้อมูล - อยู่ในพื้นที่ทํางานเดียวกัน เมื่อต้องการทําให้กระแสข้อมูลเป็นแบบไดนามิก คุณใช้ตัวแปรเพื่อขับเคลื่อนตารางต้นทาง ค่าตัวกรอง และตารางปลายทาง การเปลี่ยนแปลงเหล่านี้ช่วยให้กระแสข้อมูลทํางานด้วยค่าที่จัดเก็บไว้ในไลบรารีตัวแปร Fabric แทนที่จะเป็นค่าที่ฮาร์ดโค้ด
ตั้งค่าตัวแปร
Note
ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานไลบรารีตัวแปร Fabric สําหรับองค์กรหรือกลุ่มความปลอดภัยของคุณ เรียนรู้เพิ่มเติมเกี่ยวกับวิธีเริ่มต้นใช้งานไลบรารีตัวแปร
ตามแนวทางปฏิบัติที่ดีที่สุด ขอแนะนําให้คํานึงถึงการออกแบบก่อนที่จะสร้างโซลูชัน และส่วนประกอบใดจากกระแสข้อมูลของคุณที่มาจากไลบรารีตัวแปรแบบไดนามิก แม้ว่าคุณจะสามารถสร้างไลบรารีได้หลายไลบรารีภายในพื้นที่ทํางาน แต่ตัวอย่างนี้ใช้ไลบรารีเดียวที่ชื่อ ไลบรารีของฉัน ซึ่งเก็บตัวแปรที่กระแสข้อมูล Gen2 ใช้:
| ชื่อตัวแปร | ประเภท | จุดประสงค์ |
|---|---|---|
| WorkspaceId | Guid | ใช้สําหรับสคริปต์แหล่งข้อมูลและปลายทางในกระแสข้อมูล |
| LakehouseId | Guid | กําหนด ID ของเลคเฮาส์ที่ใช้เป็นแหล่งที่มา |
| รหัสคลังสินค้า | Guid | กําหนด ID ของคลังสินค้าที่ใช้เป็นปลายทาง |
| เขต | สตริง | ตั้งค่าที่ควรใช้เพื่อขับเคลื่อนตรรกะตัวกรองในกระแสข้อมูล |
ตรวจสอบให้แน่ใจว่าได้ตั้งค่าเริ่มต้นที่สอดคล้องกับสภาพแวดล้อมของคุณเอง แล้วบันทึกไลบรารีตัวแปร
แหล่งที่มาที่ขับเคลื่อนด้วยตัวแปร
เมื่อใช้ตัวเชื่อมต่อ Fabric ใดๆ เช่น Lakehouse, Warehouse หรือ Fabric SQL ทั้งหมดจะเป็นไปตามโครงสร้างการนําทางเดียวกันและใช้รูปแบบอินพุตเดียวกัน ในสถานการณ์สมมตินี้ ไม่มีตัวเชื่อมต่อใดที่ต้องการการป้อนข้อมูลด้วยตนเองเพื่อสร้างการเชื่อมต่อ อย่างไรก็ตาม แต่ละรายการจะแสดงพื้นที่ทํางานและรายการที่เชื่อมต่อผ่านขั้นตอนการนําทางในคิวรีของคุณ ตัวอย่างเช่น ขั้นตอนการนําทางแรกจะรวม workspaceId ที่คิวรีเชื่อมต่อ
เป้าหมายคือการแทนที่ค่าฮาร์ดโค้ดในแถบสูตรด้วยตัวแปร โดยเฉพาะอย่างยิ่ง คุณต้องการใช้ตัวแปร WorkspaceId และ LakehouseId เพื่อขับเคลื่อนตรรกะนี้ ขั้นแรก คุณต้องนําตัวแปรเหล่านั้นเข้าสู่กระแสข้อมูล Gen2 วิธีการที่แนะนําคือการสร้างแบบสอบถามสําหรับตัวแปรที่แตกต่างกันแต่ละตัวเพื่อรวมศูนย์และจัดการตัวแปรใดๆ ที่คุณวางแผนจะใช้ได้อย่างง่ายดาย ในการทําเช่นนั้น ให้สร้างคิวรีเปล่าโดยไปที่ รับข้อมูล รายการ ใน Ribbon และเลือกตัวเลือก คิวรีเปล่า จากเมนูดรอปดาวน์
การเลือกตัวเลือกนี้จะนํากล่องโต้ตอบใหม่ที่คุณสามารถดูคิวรีเปล่าที่สร้างขึ้นได้ คุณสามารถเลือก ตกลง เพื่อนําคิวรีเปล่าใหม่นี้มาใช้
เมื่อคิวรีของคุณถูกสร้างขึ้นและปรากฏในกระแสข้อมูลแล้ว ให้เปลี่ยนชื่อเป็น WorkspaceId และแทนที่สูตรในขั้นตอน แหล่งที่มา เป็น:
Variable.ValueOrDefault("$(/**/My Library/WorkspaceId)", "Your Workspace ID")
โดยพื้นฐานแล้วสคริปต์นี้เป็นสคริปต์ที่สามารถกําหนดไลบรารีและตัวแปรที่จะดึงข้อมูลได้ อาร์กิวเมนต์ที่สองของ Variable.ValueOrDefault ฟังก์ชันจะกําหนดค่าที่จะระบุเมื่อไม่สามารถดึงตัวแปรได้
Note
ตรวจสอบให้แน่ใจว่าได้แทนที่สตริงของ "รหัสพื้นที่ทํางานของคุณ" ซึ่งเป็นอาร์กิวเมนต์ที่สองของฟังก์ชัน ด้วยค่าที่สอดคล้องกันของคุณเองในสภาพแวดล้อมของคุณ และบันทึกคิวรี
ทําซ้ํากระบวนการนี้สําหรับตัวแปร LakehouseId และสร้างแบบสอบถามที่มีชื่อเดียวกันกับตัวแปร แต่ใช้สูตรต่อไปนี้สําหรับขั้นตอน แหล่งที่มา:
Variable.ValueOrDefault("$(/**/My Library/LakehouseId)", "Your Lakehouse ID")
Note
ตรวจสอบให้แน่ใจว่าได้แทนที่สตริงของ "Your Lakehouse ID" ซึ่งเป็นอาร์กิวเมนต์ที่สองของฟังก์ชัน ด้วยค่าที่สอดคล้องกันของคุณเองในสภาพแวดล้อมของคุณ และบันทึกการสืบค้น
เมื่อสร้างคิวรีทั้งสองแล้ว คุณสามารถอัปเดตสคริปต์คิวรีเพื่อใช้แทนค่าฮาร์ดโค้ดได้ ซึ่งเกี่ยวข้องกับการแทนที่ค่าเดิมในแถบสูตรด้วยตนเองด้วยการอ้างอิงไปยังคิวรี WorkspaceId และ LakehouseId สคริปต์แบบสอบถามต้นฉบับมีลักษณะดังนี้:
let
Source = Lakehouse.Contents([]),
#"Navigation 1" = Source{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
#"Navigation 2" = #"Navigation 1"{[lakehouseId = "2455f240-7345-4c8b-8524-c1abbf107d07"]}[Data],
#"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
#"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
#"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
#"Removed columns"
เมื่อคุณอัปเดตการอ้างอิงในขั้นตอนการนําทาง สคริปต์ที่อัปเดตใหม่ของคุณอาจมีลักษณะดังนี้:
let
Source = Lakehouse.Contents([]),
#"Navigation 1" = Source{[workspaceId = WorkspaceId]}[Data],
#"Navigation 2" = #"Navigation 1"{[lakehouseId = LakehouseId]}[Data],
#"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
#"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
#"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
#"Removed columns"
และคุณสังเกตเห็นว่ายังคงประเมินตัวอย่างข้อมูลในตัวแก้ไขกระแสข้อมูลอย่างถูกต้องด้วยการอ้างอิงโดยตรงที่สร้างขึ้นในมุมมองไดอะแกรมระหว่างคิวรีทั้งหมดที่เกี่ยวข้อง:
ตรรกะที่ขับเคลื่อนด้วยตัวแปร
ตอนนี้แหล่งข้อมูลกําลังใช้ตัวแปร คุณสามารถมุ่งเน้นไปที่การปรับเปลี่ยนตรรกะการแปลงของกระแสข้อมูลได้ ในสถานการณ์สมมตินี้ ขั้นตอนตัวกรองคือที่ที่ตรรกะถูกนําไปใช้ และค่าที่กําลังกรอง ซึ่งปัจจุบันฮาร์ดโค้ดเป็น ตะวันออกเฉียงใต้ ควรถูกแทนที่ด้วยแบบสอบถามที่อ้างอิงตัวแปร เมื่อต้องการทําเช่นนี้ คุณทําซ้ําขั้นตอนเดียวกันในการสร้างแบบสอบถามเปล่าใหม่ และนําสูตรของขั้นตอน แหล่งที่มา มาใช้ใหม่เพื่อเก็บตัวแปรสําหรับ อาณาเขต และเปลี่ยนชื่อของแบบสอบถามเป็นชื่อตัวแปรด้วย ใช้สคริปต์ต่อไปนี้:
Variable.ValueOrDefault("$(/**/My Library/Territory)", "Mideast")
เนื่องจากขั้นตอนตัวกรองของคุณถูกสร้างขึ้นโดยใช้อินเทอร์เฟซผู้ใช้ คุณสามารถตรงไปที่ขั้นตอน แถวที่กรอง เลือกสองครั้ง และรับกล่องโต้ตอบการตั้งค่าสําหรับขั้นตอนตัวกรอง กล่องโต้ตอบนี้ช่วยให้คุณสามารถเลือกผ่านวิดเจ็ตอินพุตหากคุณต้องการใช้คิวรีแทนค่าคงที่:
หลังจากเลือกตัวเลือกเพื่อ เลือกคิวรี ดรอปดาวน์จะปรากฏขึ้นเพื่อแสดงคิวรีทั้งหมดที่คุณสามารถเลือกได้ จากรายการนี้ คุณสามารถเลือกแบบสอบถาม อาณาเขต ที่สร้างขึ้นใหม่ได้
เมื่อคุณเลือก ตกลง ให้สังเกตว่ามุมมองไดอะแกรมได้สร้างการเชื่อมโยงระหว่างแบบสอบถาม อาณาเขต และแบบสอบถามที่ใช้งานอยู่แล้ว ไม่เพียงแค่นั้น แต่การแสดงตัวอย่างข้อมูลจะแสดงข้อมูลสําหรับดินแดนตะวันออกกลาง
ปลายทางที่ขับเคลื่อนด้วยตัวแปร
Note
ขอแนะนําให้คุณทําความคุ้นเคยกับแนวคิดของปลายทางข้อมูลใน Dataflow Gen2 และวิธีสร้างสคริปต์ Mashup จากบทความเกี่ยวกับ ปลายทางข้อมูลและการตั้งค่าที่มีการจัดการ
ส่วนประกอบสุดท้ายที่จะปรับเปลี่ยนในสถานการณ์นี้คือปลายทาง แม้ว่าข้อมูลเกี่ยวกับปลายทางของข้อมูลจะสามารถพบได้ในตัวแก้ไขกระแสข้อมูล แต่หากต้องการปรับเปลี่ยนส่วนนี้ของกระแสข้อมูล คุณจําเป็นต้องใช้ Git หรือ REST API
บทช่วยสอนนี้แสดงวิธีทําการเปลี่ยนแปลงผ่าน Git ก่อนที่คุณจะสามารถทําการเปลี่ยนแปลงผ่าน git ได้ตรวจสอบให้แน่ใจว่าได้:
- สร้างแบบสอบถามสําหรับตัวแปร WarehouseId: ทําตามกระบวนการเดียวกันกับที่อธิบายไว้ในส่วนก่อนหน้านี้เพื่อสร้างแบบสอบถามเปล่าใหม่ และแทนที่สูตรสําหรับขั้นตอน แหล่งที่มา เป็น:
Variable.ValueOrDefault("$(/**/My Library/WarehouseId)", "Your Warehouse ID")
Note
ตรวจสอบให้แน่ใจว่าได้แทนที่สตริงของ "รหัสคลังสินค้าของคุณ" ซึ่งเป็นอาร์กิวเมนต์ที่สองของฟังก์ชัน ด้วยค่าที่สอดคล้องกันของคุณเองในสภาพแวดล้อมของคุณ และบันทึกแบบสอบถาม
สําคัญ
ตรวจสอบว่าคิวรีทั้งหมดที่มีตัวแปรถูกปิดใช้งานการจัดเตรียม
- บันทึกกระแสข้อมูล: ใช้ปุ่ม บันทึก ในแท็บ หน้าแรก ของ Ribbon
เมื่อบันทึกกระแสข้อมูลของคุณแล้ว ให้ตรวจสอบให้แน่ใจว่าได้ยอมรับการเปลี่ยนแปลงไปยังที่เก็บ Git ของคุณและตรงไปที่ที่เก็บของคุณเพื่อดูไฟล์ mashup.pq ของกระแสข้อมูลของคุณ เมื่อดูไฟล์ mashup.pq ให้มองหาแบบสอบถามที่คุณเชื่อมโยงปลายทางข้อมูล ในสถานการณ์สมมตินี้ ชื่อของแบบสอบถามนั้นเป็น dimension_city คุณเห็นแอตทริบิวต์ระเบียนเหนือชื่อแบบสอบถามนี้:
[DataDestinations = {[Definition = [Kind = "Reference", QueryName = "dimension_city_DataDestination", IsNewTarget = true], Settings = [Kind = "Manual", AllowCreation = true, ColumnSettings = [Mappings = {[SourceColumnName = "CityKey", DestinationColumnName = "CityKey"], [SourceColumnName = "WWICityID", DestinationColumnName = "WWICityID"], [SourceColumnName = "City", DestinationColumnName = "City"], [SourceColumnName = "StateProvince", DestinationColumnName = "StateProvince"], [SourceColumnName = "Country", DestinationColumnName = "Country"], [SourceColumnName = "Continent", DestinationColumnName = "Continent"], [SourceColumnName = "SalesTerritory", DestinationColumnName = "SalesTerritory"], [SourceColumnName = "Region", DestinationColumnName = "Region"], [SourceColumnName = "Subregion", DestinationColumnName = "Subregion"], [SourceColumnName = "Location", DestinationColumnName = "Location"], [SourceColumnName = "LatestRecordedPopulation", DestinationColumnName = "LatestRecordedPopulation"]}], DynamicSchema = false, UpdateMethod = [Kind = "Replace"], TypeSettings = [Kind = "Table"]]]}]
shared dimension_city = let
ระเบียนแอตทริบิวต์นี้มีเขตข้อมูลที่มีชื่อ QueryName ซึ่งเก็บชื่อของแบบสอบถามที่มีตรรกะปลายทางข้อมูลทั้งหมดที่สัมพันธ์กับแบบสอบถามนี้ แบบสอบถามนี้มีลักษณะดังนี้:
shared dimension_city_DataDestination = let
Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
Navigation_1 = Pattern{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
Navigation_2 = Navigation_1{[warehouseId = "527ba9c1-4077-433f-a491-9ef370e9230a"]}[Data],
TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
TableNavigation
คุณสังเกตเห็นว่า คล้ายกับสคริปต์ของต้นทางสําหรับ Lakehouse สคริปต์นี้สําหรับปลายทางมีรูปแบบที่คล้ายกันซึ่งฮาร์ดโค้ด workspaceid ที่ต้องใช้และ warehouseId ด้วย แทนที่ค่าคงที่เหล่านั้นด้วยตัวระบุของแบบสอบถามที่คุณสร้างขึ้น และสคริปต์ของคุณจะมีลักษณะดังนี้:
shared dimension_city_DataDestination = let
Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
Navigation_1 = Pattern{[workspaceId = WorkspaceId]}[Data],
Navigation_2 = Navigation_1{[warehouseId = WarehouseId]}[Data],
TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
TableNavigation
ขณะนี้คุณสามารถยอมรับการเปลี่ยนแปลงนี้และอัปเดตกระแสข้อมูลของคุณโดยใช้การเปลี่ยนแปลงจากกระแสข้อมูลของคุณผ่านคุณลักษณะการควบคุมแหล่งที่มาในพื้นที่ทํางานของคุณ
ตอนนี้คุณสามารถเรียกใช้กระแสข้อมูลของคุณ ซึ่งใช้ค่าจากไลบรารีตัวแปร