Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tabel Navigasi (atau tabel navigasi) adalah bagian inti dari memberikan pengalaman yang mudah digunakan untuk konektor Anda. Pengalaman Power Query menampilkannya kepada pengguna setelah mereka memasukkan parameter yang diperlukan untuk fungsi sumber data Anda, dan telah diautentikasi dengan sumber data.
Di balik layar, tabel navigasi hanyalah nilai Tabel M biasa dengan bidang metadata tertentu yang ditentukan pada Jenisnya. Saat fungsi sumber data Anda mengembalikan tabel dengan bidang ini yang ditentukan, Power Query akan menampilkan dialog navigator. Anda benar-benar dapat melihat data yang mendasar sebagai nilai Tabel dengan mengklik kanan pada simpul akar dan memilih Edit.
Table.ToNavigationTable
Anda dapat menggunakan Table.ToNavigationTable
fungsi untuk menambahkan metadata jenis tabel yang diperlukan untuk membuat tabel navigasi.
Catatan
Saat ini Anda perlu menyalin dan menempelkan fungsi ini ke ekstensi M Anda. Di masa depan kemungkinan akan dipindahkan ke pustaka standar M.
Tabel berikut menjelaskan parameter untuk fungsi ini:
Parameter | Detail |
---|---|
tabel | Tabel navigasi Anda. |
keyColumns | Daftar nama kolom yang bertindak sebagai kunci utama untuk tabel navigasi Anda. |
nameColumn | Nama kolom yang harus digunakan sebagai nama tampilan di navigator. |
dataColumn | Nama kolom yang berisi Tabel atau Fungsi yang akan ditampilkan. |
itemKindColumn | Nama kolom yang akan digunakan untuk menentukan tipe ikon yang akan ditampilkan. Lihat di bawah ini untuk daftar nilai yang valid untuk kolom. |
itemNameColumn | Nama kolom yang akan digunakan untuk menentukan perilaku pratinjau. Ini biasanya diatur ke nilai yang sama dengan itemKind. |
isLeafColumn | Nama kolom yang digunakan untuk menentukan apakah ini adalah simpul daun, atau apakah simpul dapat diperluas untuk berisi tabel navigasi lain. |
Fungsi menambahkan metadata berikut ke jenis tabel:
Bidang | Parameter |
---|---|
NavigationTable.NameColumn | nameColumn |
NavigationTable.DataColumn | dataColumn |
NavigationTable.ItemKindColumn | itemKindColumn |
NavigationTable.IsLeafColumn | isLeafColumn |
Preview.DelayColumn | itemNameColumn |
Nilai untuk ItemKind
Setiap nilai jenis item berikut ini menyediakan ikon yang berbeda dalam tabel navigasi.
- Feed
- Database
- DatabaseServer
- Dimensi
- Tabel
- Folder
- Fungsi
- Tampilan
- Seprai
- DefinedName
- Rekaman
Contoh
Tabel navigasi datar
Sampel kode berikut menampilkan tabel navigasi datar dengan tiga tabel dan fungsi.
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"}});
Kode ini akan menghasilkan tampilan Navigator berikut di Power BI Desktop:
Tabel navigasi multi-tingkat
Dimungkinkan untuk menggunakan tabel navigasi berlapis untuk membuat tampilan hierarkis di atas himpunan data Anda. Anda melakukan ini dengan mengatur nilai untuk baris tersebut IsLeaf
ke false
(yang menandainya sebagai simpul yang dapat diperluas), dan memformat Data
kolom menjadi tabel navigasi lain.
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;
Kode ini akan menghasilkan tampilan Navigator berikut di Power BI Desktop:
Tabel navigasi dinamis
Fungsionalitas yang lebih kompleks dapat dibangun dari dasar-dasar ini. Meskipun semua contoh di atas menunjukkan entitas yang dikodekan secara permanen dalam tabel navigasi, mudah untuk melihat bagaimana tabel navigasi dapat dihasilkan secara dinamis berdasarkan entitas yang tersedia untuk pengguna tertentu. Beberapa pertimbangan utama untuk tabel navigasi dinamis meliputi:
- Penanganan kesalahan untuk memastikan pengalaman yang baik bagi pengguna yang tidak memiliki akses ke titik akhir tertentu.
- Evaluasi node malas secara default; simpul daun tidak dievaluasi sampai node induk diperluas. Implementasi tertentu dari tabel navigasi dinamis multi-tingkat dapat mengakibatkan evaluasi yang bersemangat pada seluruh pohon. Pastikan untuk memantau jumlah panggilan yang dilakukan Power Query karena awalnya merender tabel navigasi. Misalnya, Table.InsertRows adalah 'lazier' daripada Table.FromRecords, karena tidak perlu mengevaluasi argumennya.