Bagikan melalui


Menangani jalur sumber Data

Mesin M mengidentifikasi sumber data menggunakan kombinasi Jenis dan Jalurnya. Saat sumber data ditemui selama evaluasi kueri, mesin M mencoba menemukan kredensial yang cocok. Jika tidak ada kredensial yang ditemukan, mesin mengembalikan kesalahan khusus yang menghasilkan permintaan kredensial di Power Query.

Nilai Kind berasal dari definisi Jenis Sumber Data.

Nilai Jalur berasal dari parameter yang diperlukan dari fungsi sumber data Anda. Parameter opsional tidak diperhitungkan ke dalam pengidentifikasi jalur sumber data. Akibatnya, semua fungsi sumber data yang terkait dengan jenis sumber data harus memiliki parameter yang sama. Ada penanganan khusus untuk fungsi yang memiliki satu parameter jenis Uri.Type. Buka Functions dengan parameter Uri untuk detailnya.

Anda bisa melihat contoh bagaimana kredensial disimpan dalam dialog Pengaturan sumber data di Power BI Desktop. Dalam dialog ini, Jenis diwakili oleh ikon, dan nilai Jalur ditampilkan sebagai teks.

Cuplikan layar info masuk pengaturan sumber data.

Catatan

Jika Anda mengubah parameter fungsi sumber data yang diperlukan selama pengembangan, kredensial yang disimpan sebelumnya tidak lagi berfungsi (karena nilai jalur tidak lagi cocok). Anda harus menghapus kredensial yang disimpan kapan saja Anda mengubah parameter fungsi sumber data Anda. Jika kredensial yang tidak kompatibel ditemukan, Anda mungkin menerima kesalahan saat runtime.

Format jalur sumber data

Nilai Jalur untuk sumber data berasal dari parameter fungsi sumber data yang diperlukan. Parameter yang diperlukan dapat dikecualikan dari jalur dengan menambahkan DataSource.Path = false ke metadata fungsi. Untuk informasi selengkapnya, buka Mengecualikan parameter yang diperlukan dari jalur sumber data Anda.

Secara default, Anda dapat melihat nilai string aktual dalam dialog Pengaturan sumber data di Power BI Desktop, dan di prompt kredensial. Jika definisi Jenis Sumber Data telah menyertakan Label nilai, Anda akan melihat nilai label sebagai gantinya.

Misalnya, fungsi sumber data dalam sampel HelloWorldWithDocs memiliki tanda tangan berikut:

HelloWorldWithDocs.Contents = (message as text, optional count as number) as table => ...

Fungsi ini memiliki satu parameter (message) jenis textyang diperlukan , dan digunakan untuk menghitung jalur sumber data. Parameter opsional (count) diabaikan. Jalur akan ditampilkan sebagai berikut:

Perintah kredensial

Cuplikan layar permintaan kredensial dengan jalur.

UI pengaturan sumber data

Cuplikan layar antarmuka pengguna pengaturan sumber data.

Saat nilai Label ditentukan, nilai jalur sumber data tidak ditampilkan:

Cuplikan layar pengaturan sumber data dengan label yang ditentukan.

Catatan

Saat ini kami menyarankan agar Anda tidak menyertakan Label untuk sumber data Anda jika fungsi Anda memiliki parameter yang diperlukan, karena pengguna tidak akan dapat membedakan antara kredensial yang berbeda yang telah mereka masukkan. Kami berharap dapat meningkatkan ini di masa mendatang (yaitu, memungkinkan konektor data menampilkan jalur sumber data kustom mereka sendiri).

Mengecualikan parameter yang diperlukan dari jalur sumber data Anda

Jika Anda ingin parameter fungsi diperlukan, tetapi tidak disertakan sebagai bagian dari jalur sumber data, Anda dapat menambahkan DataSource.Path = false ke metadata dokumentasi fungsi. Properti ini dapat ditambahkan ke satu atau beberapa parameter untuk fungsi Anda. Bidang ini menghapus nilai dari jalur sumber data Anda (artinya tidak lagi diteruskan ke fungsi Anda TestConnection ), sehingga hanya boleh digunakan untuk parameter yang tidak diperlukan untuk mengidentifikasi sumber data Anda, atau membedakan antara kredensial pengguna.

Misalnya, konektor dalam sampel HelloWorldWithDocs akan memerlukan kredensial yang berbeda untuk nilai yang berbeda message . DataSource.Path = false Menambahkan ke message parameter akan menghapusnya dari perhitungan jalur sumber data, secara efektif menjadikan konektor sebagai "singleton". Semua panggilan ke HelloWorldWithDocs.Contents diperlakukan sebagai sumber data yang sama, dan pengguna hanya menyediakan kredensial sekali.

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""}})"
        ]}
    ];

Fungsi dengan parameter Uri

Karena sumber data dengan pengidentifikasi berbasis Uri sangat umum, ada penanganan khusus di UI Power Query saat berhadapan dengan jalur sumber data berbasis Uri. Ketika sumber data berbasis Uri ditemui, dialog kredensial menyediakan dropdown, yang memungkinkan pengguna untuk memilih jalur dasar daripada jalur lengkap (dan semua jalur di antaranya).

Cuplikan layar dialog kredensial yang memperlihatkan jalur pengaturan tempat kredensial diterapkan.

Seperti Uri.Type jenis yang ditulis daripada jenis primitif dalam bahasa M, Anda harus menggunakan fungsi Value.ReplaceType untuk menunjukkan bahwa parameter teks Anda harus diperlakukan sebagai Uri.

shared GithubSample.Contents = Value.ReplaceType(Github.Contents, type function (url as Uri.type) as any);