การจัดการการนําทาง

ตารางการนําทาง (หรือตารางการนําทาง) เป็นส่วนหลักของการมอบประสบการณ์ที่เป็นมิตรกับผู้ใช้ให้กับตัวเชื่อมต่อของคุณ ประสบการณ์Power Queryจะแสดงผลให้ผู้ใช้เห็นหลังจากที่ได้ป้อนพารามิเตอร์ที่ต้องใช้ใดๆ กับฟังก์ชันแหล่งข้อมูลของคุณ และรับรองความถูกต้องกับแหล่งข้อมูลแล้ว

ตารางนําทาง TripPin

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

Table.ToNavigationTable

คุณสามารถใช้ฟังก์ชันเพื่อเพิ่ม Table.ToNavigationTable เมตาดาต้าชนิดตารางที่ต้องใช้ในการสร้างตารางการ nav

หมายเหตุ

ในขณะนี้คุณต้องคัดลอกและวางฟังก์ชันนี้ลงในส่วนขยาย M ของคุณ ในอนาคต อาจจะถูกย้ายไปยังไลบรารีมาตรฐาน M

ตารางต่อไปนี้อธิบายพารามิเตอร์ของฟังก์ชันนี้:

พารามิเตอร์ รายละเอียด
ตาราง ตารางนําทางของคุณ
keyColumns รายการชื่อคอลัมน์ที่ใช้เป็นคีย์หลักในตารางการนําทางของคุณ
nameColumn ชื่อของคอลัมน์ที่ควรใช้เป็นชื่อที่แสดงในบานหน้าต่างนําทาง
dataColumn ชื่อของคอลัมน์ที่มี Table หรือ Function ที่จะแสดง
itemKindColumn ชื่อของคอลัมน์ที่จะใช้เพื่อพิจารณาชนิดของไอคอนที่จะแสดง ดูด้านล่างเพื่อดูรายการของค่าที่ถูกต้องของคอลัมน์
itemNameColumn ชื่อของคอลัมน์ที่จะใช้เพื่อพิจารณาพฤติกรรมการแสดงตัวอย่าง ซึ่งโดยทั่วไปแล้วถูกตั้งค่าเป็นค่าเดียวกับ itemKind
isLeafColumn ชื่อของคอลัมน์ที่ใช้เพื่อพิจารณาว่านี่คือโหนดปลายหรือไม่ หรือถ้ามีการขยายโหนดให้ประกอบด้วยตารางนําทางอื่น

ฟังก์ชันจะเพิ่มเมตาดาต้าต่อไปนี้ลงในชนิดตาราง:

ฟิลด์ พารามิเตอร์
NavigationTable.NameColumn nameColumn
NavigationTable.DataColumn dataColumn
NavigationTable.ItemKindColumn itemKindColumn
NavigationTable.IsLeafColumn isLeafColumn
Preview.DelayColumn itemNameColumn

ค่าใน ItemKind

ค่าประเภทรายการแต่ละรายการต่อไปนี้แสดงไอคอนที่แตกต่างกันในตารางนําทาง

  • ฟีด
  • ยกกำลังสาม
  • CubeDatabase
  • CubeView
  • CubeViewFolder
  • ฐานข้อมูล
  • DatabaseServer
  • มิติ
  • ตาราง
  • โฟลเดอร์
  • ฟังก์ชัน
  • มุมมอง
  • แผ่น
  • คิวบ์ย่อย
  • DefinedName
  • เรกคอร์ด

รูปภาพด้านล่างแสดงไอคอนต่าง ๆ ของชนิดรายการPower BI Desktopในรายการ

รายการของ Navigation Table ItemKinds

ตัวอย่าง

ตารางนําทางแบบแฟลต

ตัวอย่างโค้ดต่อไปนี้แสดงตารางการ nav แบบแฟลตที่มีสามตารางและฟังก์ชัน

shared NavigationTable.Simple = () =>
    let
        objects = #table(
            {"Name",       "Key",        "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1",      "item1",      #table({"Column1"}, {{"Item1"}}), "Table",    "Table",    true},
            {"Item2",      "item2",      #table({"Column1"}, {{"Item2"}}), "Table",    "Table",    true},
            {"Item3",      "item3",      FunctionCallThatReturnsATable(),  "Table",    "Table",    true},            
            {"MyFunction", "myfunction", AnotherFunction.Contents,       "Function", "Function", true}
            }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

shared FunctionCallThatReturnsATable = () =>
    #table({"DynamicColumn"}, {{"Dynamic Value"}});

โค้ดนี้จะส่งผลให้ตัวนําทางต่อไปนี้แสดงPower BI Desktop:

ตัวอย่างของตารางนําทางแบบแฟลต

ตารางนําทางแบบหลายระดับ

คุณสามารถใช้ตารางการนําทางแบบซ้อนกันเพื่อสร้างมุมมองแบบลวบชั้นผ่านชุดข้อมูลของคุณ คุณลองตั้งค่าให้แถวนั้นเป็น (ซึ่งเครื่องหมายเป็นโหนดที่สามารถขยายได้) และ IsLeaf false จัดรูปแบบคอลัมน์เป็น Data ตารางการ nav อีกตารางหนึ่ง

shared NavigationTable.Nested = () as table =>
    let
        objects = #table(
            {"Name",       "Key",  "Data",                "ItemKind", "ItemName", "IsLeaf"},{
            {"Nested A",   "n1",   CreateNavTable("AAA"), "Table",    "Table",    false},
            {"Nested B",   "n2",   CreateNavTable("BBB"), "Table",    "Table",    false},
            {"Nested C",   "n3",   CreateNavTable("CCC"), "Table",    "Table",    false}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

CreateNavTable = (message as text) as table => 
    let
        objects = #table(
            {"Name",  "Key",   "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1", "item1", #table({"Column1"}, {{message}}), "Table",    "Table",    true},
            {"Item2", "item2", #table({"Column1"}, {{message}}), "Table",    "Table",    true}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

โค้ดนี้จะส่งผลให้ตัวนําทางต่อไปนี้แสดงPower BI Desktop:

ตัวอย่างของตารางการนําทางแบบลวบชั้น

ตารางการนําทางแบบไดนามิก

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

  • การจัดการ ข้อผิดพลาดเพื่อให้แน่ใจว่าประสบการณ์ที่ดีของผู้ใช้ไม่สามารถเข้าถึงจุดสิ้นสุดบางอย่างได้
  • การประเมินผลโหนดจะขี้เกียจตามค่าเริ่มต้น โหนดปลายไม่ได้รับการประเมินจนกว่าจะขยายโหนดหลัก การใช้งานบางอย่างของตารางการ nav แบบไดนามิกแบบหลายระดับอาจส่งผลให้มีการประเมินความกระตือรือร้นของต้นไม้ทั้งหมด ตรวจสอบให้แน่ใจว่าได้ตรวจสอบจํานวนการโทรที่Power Queryได้ในขณะที่เริ่มแสดงตารางนําทาง ตัวอย่างเช่น Table.InsertRows 'lazier' มากกว่า Table.FromRecords เนื่องจากไม่ต้องใช้การประเมินอาร์กิวเมนต์