Share via


Kaynak yolunu işleme

M altyapısı, tür ve yolunun bir bileşimini kullanarak bir veri kaynağını tanımlar. Sorgu değerlendirmesi sırasında bir veri kaynağıyla karşılaşıldığında, M altyapısı eşleşen kimlik bilgilerini bulmaya çalışır. Hiçbir kimlik bilgisi bulunmazsa altyapı, Power Query'de kimlik bilgisi istemiyle sonuçlanabilecek özel bir hata döndürür.

Tür değeri Veri Kaynağı Türü tanımından gelir.

Path değeri, veri kaynağı işlevinizin gerekli parametrelerinden türetilir. İsteğe bağlı parametreler veri kaynağı yol tanımlayıcısına dahil değildir. Sonuç olarak, bir veri kaynağı türüyle ilişkili tüm veri kaynağı işlevleri aynı parametrelere sahip olmalıdır. türünde Uri.Typetek bir parametresi olan işlevler için özel işleme vardır. Ayrıntılar için Uri parametresiyle İşlevler'e gidin.

Power BI Desktop'taki Veri kaynağı ayarları iletişim kutusunda kimlik bilgilerinin nasıl depolandığını gösteren bir örnek görebilirsiniz. Bu iletişim kutusunda, Tür bir simgeyle gösterilir ve Yol değeri metin olarak görüntülenir.

Screenshot of the data source settings credentials.

Dekont

Geliştirme sırasında veri kaynağı işlevinizin gerekli parametrelerini değiştirirseniz, önceden depolanan kimlik bilgileri artık çalışmaz (yol değerleri artık eşleşmediğinden). Veri kaynağı işlev parametrelerinizi her değiştirdiğinizde depolanan kimlik bilgilerini silmeniz gerekir. Uyumsuz kimlik bilgileri bulunursa çalışma zamanında bir hata alabilirsiniz.

Veri kaynağı yol biçimi

Veri kaynağının Path değeri, veri kaynağı işlevinin gerekli parametrelerinden türetilir. Gerekli parametreler, işlevin meta verilerine eklenerek DataSource.Path = false yolun dışında tutulabilir. Daha fazla bilgi için Gerekli parametreleri veri kaynağı yolunuzdan dışlama bölümüne gidin.

Varsayılan olarak, gerçek dize değerini Power BI Desktop'taki Veri kaynağı ayarları iletişim kutusunda ve kimlik bilgisi isteminde görebilirsiniz. Veri Kaynağı Türü tanımı bir Label değer eklemişse, bunun yerine etiket değerini görürsünüz.

Örneğin, HelloWorldWithDocs örneğindeki veri kaynağı işlevi aşağıdaki imzaya sahiptir:

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

işlevi, türünde texttek bir gerekli parametreye (message) sahiptir ve veri kaynağı yolunu hesaplamak için kullanılır. İsteğe bağlı parametre (count) yoksayılır. Yol aşağıdaki gibi görüntülenir:

Kimlik bilgisi istemi

Screenshot of the credential prompt with path.

Veri kaynağı ayarları kullanıcı arabirimi

Screenshot of the data source settings UI.

Etiket değeri tanımlandığında veri kaynağı yolu değeri gösterilmez:

Screenshot of the data source settings with a label defined.

Dekont

İşlevinizde gerekli parametreler varsa veri kaynağınız için etiket eklememenizi öneririz çünkü kullanıcılar girdikleri farklı kimlik bilgilerini ayırt edemeyecektir. Gelecekte bunu geliştirmeyi umuyoruz (yani veri bağlayıcılarının kendi özel veri kaynağı yollarını görüntülemesine izin verir).

Gerekli parametreleri veri kaynağı yolunuz dışında tutarak

Bir işlev parametresinin gerekli olmasını, ancak veri kaynağı yolunuzun bir parçası olarak dahil edilmemesini istiyorsanız, işlev belgeleri meta verilerine ekleyebilirsiniz DataSource.Path = false . Bu özellik, işlevinizin bir veya daha fazla parametresine eklenebilir. Bu alan, veri kaynağı yolunuzdan değeri kaldırır (işlevinize TestConnection artık geçirilmemesi anlamına gelir), bu nedenle yalnızca veri kaynağınızı tanımlamak veya kullanıcı kimlik bilgilerini ayırt etmek için gerekli olmayan parametreler için kullanılmalıdır.

Örneğin HelloWorldWithDocs örneğindeki bağlayıcı, farklı değerler için farklı message kimlik bilgileri gerektirir. parametresine message eklemekDataSource.Path = false, bunu veri kaynağı yolu hesaplamasından kaldırır ve bağlayıcıyı etkili bir şekilde "tekil" hale getirir. tüm çağrıları HelloWorldWithDocs.Contents aynı veri kaynağı olarak kabul edilir ve kullanıcı kimlik bilgilerini yalnızca bir kez sağlar.

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 parametresine sahip işlevler

Uri tabanlı tanımlayıcıya sahip veri kaynakları çok yaygın olduğundan, Uri tabanlı veri kaynağı yollarıyla ilgilenirken Power Query kullanıcı arabiriminde özel işleme vardır. Uri tabanlı bir veri kaynağıyla karşılaşıldığında, kimlik bilgisi iletişim kutusu kullanıcının tam yol (ve aradaki tüm yollar) yerine temel yolu seçmesine olanak tanıyan bir açılan menü sağlar.

Screenshot of the credential dialog showing the setting path that credentials apply to.

M dilindeki ilkel bir tür yerine atfedilen bir tür olduğu gibiUri.Type, metin parametrenizin Uri olarak ele alınması gerektiğini belirtmek için Value.ReplaceType işlevini kullanmanız gerekir.

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