Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu makale, özel bağlayıcılar için yerel sorgu desteğinin uygulanması ve bunların üzerine sorguyu katlama ile ilgili gelişmiş konuları kapsar. Bu konuyla ilgili bir makale, bu kavramlar hakkında hali hazırda bilgi sahibi olduğunuz varsayılarak yazılmıştır.
Power Query özel bağlayıcıları hakkında daha fazla bilgi edinmek için Power Query SDK'sına Genel Bakış'a gidin.
Power Query'de, aradığınız verileri almak için veri kaynağınızda özel yerel sorgular yürütebilirsiniz. Ayrıca, bu işlem boyunca ve Power Query içinde yapılan sonraki dönüştürme işlemlerinde sorgu katlamayı sürdürme yeteneğini etkinleştirebilirsiniz.
Bu makalenin amacı, özel bağlayıcınız için bu özelliği nasıl uygulayabileceğinizi göstermektir.
Önkoşullar
Bu makalede, veri kaynağı için SQL ODBC sürücüsünü kullanan bir örnek başlangıç noktası olarak kullanılır. Yerel sorgu özelliğinin uygulanması şu anda yalnızca SQL-92 standardına uygun ODBC bağlayıcıları için desteklenmektedir.
Örnek bağlayıcı SQL Server Native Client 11.0 sürücüsünü kullanır. Bu öğreticiyi takip etmek için bu sürücünün yüklü olduğundan emin olun.
Örnek bağlayıcının tamamlanmış sürümünü GitHub Deposu'ndaki Son klasöründen de görüntüleyebilirsiniz.
Bağlayıcınızın SQLCapabilities değerini değiştirme
Örnek bağlayıcının SqlCapabilities kaydında adı ve Sql92Translation değerini içeren bir kayıt alanı bulabilirsiniz. Bu yeni alan, yerel sorgunun herhangi bir doğrulama olmadan Power Query kullanılarak geçirilmesi için gereklidir.
SqlCapabilities = Diagnostics.LogValue("SqlCapabilities_Options", defaultConfig[SqlCapabilities] & [
// Place custom overrides here
// The values below are required for the SQL Native Client ODBC driver, but might
// not be required for your data source.
SupportsTop = false,
SupportsDerivedTable = true,
Sql92Conformance = 8 /* SQL_SC_SQL92_FULL */,
GroupByCapabilities = 4 /* SQL_GB_NO_RELATION */,
FractionalSecondsScale = 3,
Sql92Translation = "PassThrough"
]),
Devam etmeden önce bu alanın bağlayıcınızda göründüğüne emin olun. Aksi takdirde, bağlayıcı tarafından bildirilmediğinden desteklenmeyen bir özelliği kullanmaya geldiğinde daha sonra uyarılarla ve hatalarla karşılaşırsınız.
Bağlayıcı dosyasını (.mez veya.pqx olarak) derleyin ve el ile test etmek ve yerel sorgunuzun hedefini tanımlamak için Power BI Desktop'a yükleyin.
Bağlayıcınızın yerel sorgu özelliklerini el ile test edin
Uyarı
Bu makale için AdventureWorks2019 örnek veritabanını kullanacağız. Ancak, seçtiğiniz herhangi bir SQL Server veritabanıyla birlikte ilerleyebilir ve seçilen veritabanının ayrıntılarına indiğinde gerekli değişiklikleri yapabilirsiniz.
Bu makalede yerel sorgu desteğinin uygulanması için kullanıcının üç değer girmesi istenecektir:
- Sunucu adı
- Veritabanı adı
- Veritabanı düzeyinde yerel sorgu
Şimdi Power BI Desktop'ta Veri Al deneyimine gidin ve SqlODBC Örneği adlı bağlayıcıyı bulun.
Bağlayıcı iletişim kutusu için sunucunuzun parametrelerini ve veritabanınızın adını girin. Ardından Tamam'ı seçin.
Yeni bir gezgin penceresi görüntülenir. Gezgin'de sql sürücüsünden sunucunun ve içindeki veritabanlarının hiyerarşik görünümünü görüntüleyen yerel gezinti davranışını görüntüleyebilirsiniz. AdventureWorks2019 veritabanına sağ tıklayın ve Verileri Dönüştür'ü seçin.
Bu seçim sizi Power Query düzenleyicisine getirir ve tüm yerel sorguların veritabanı düzeyinde çalışması gerektiğinden yerel sorgunuzun hedefinin etkili bir şekilde önizlemesini sağlar. Bağlayıcınızı yürütmeden önce yerel sorgularınızın hedefine nasıl gidilmesi gerektiğini daha iyi anlamak için son adımın formül çubuğunu inceleyin. Bu durumda formül çubuğunda aşağıdaki bilgiler görüntülenir:
= Source{[Name="AdventureWorks2019",Kind="Database"]}[Data]
Kaynak , önceki adımın adıdır ve bu örnekte, geçirilen parametrelerle bağlayıcınızın yayımlanmış işlevidir. Liste ve içindeki kayıt, bir tabloda belirli bir satıra gitmenize yardımcı olur. Satır, Ad alanının AdventureWorks2019 ve Kind alanının Database olması gereken kayıt ölçütlerine göre tanımlanır. Satır bulunduktan sonra, listenin [Data] dışındaki {} Power Query'nin Veri alanının içindeki değere erişmesine olanak tanır ve bu değer, bu durumda, bir tablodur. Bu gezintiyi daha iyi anlamak için önceki adıma (Kaynak) dönebilirsiniz.
Yerel sorguyu test et
Hedef belirlendikten sonra, formül çubuğunda fx simgesini seçerek gezinti adımından sonra özel bir adım oluşturun.
Formül çubuğunun içindeki formülü aşağıdaki formülle değiştirin ve enter tuşuna basın.
= Value.NativeQuery( AdventureWorks2019_Database, "SELECT TOP (1000) *
FROM [Person].[Address]")
Bu değişikliği uyguladıktan sonra, veri kaynağınızda yerel sorguyu çalıştırma izni isteyen formül çubuğunun altında bir uyarı görüntülenmelidir.
Düzenleme İzni'ni seçin. Yerel sorgu çalıştırma olasılıkları hakkında sizi uyarmaya çalışan yeni bir Yerel Veritabanı Sorgusu iletişim kutusu görüntülenir. Bu durumda, bu SQL Deyiminin güvenli olduğunu biliyoruz, bu nedenle komutunu yürütmek için Çalıştır'ı seçin.
Sorgunuzu çalıştırdıktan sonra Power Query düzenleyicisinde sorgunuzun önizlemesi görüntülenir. Bu önizleme, bağlayıcınızın yerel sorgu çalıştırabildiğini doğrular.
Bağlayıcınıza yerel sorgu mantığı uygulama
Önceki bölümlerden toplanan bilgilerle, şimdi amaç bu bilgileri bağlayıcınız için koda çevirmektir.
Bu çeviriyi gerçekleştirmenin yolu, bağlayıcınızın Yayımla kaydına yeni bir NativeQueryProperties kayıt alanı eklemektir. Bu durumda kayıt budurSqlODBC.Publish. Kayıt, NativeQueryProperties bağlayıcının işlevle Value.NativeQuery nasıl etkileşim kuracağını tanımlamada önemli bir rol oynar.
Yeni kayıt alanı iki alandan oluşur:
-
NavigationSteps: Bu alan, gezintinin bağlayıcınız tarafından nasıl gerçekleştirilmesi veya işlenmesi gerektiğini tanımlar. İşlevi kullanarak sorgulamak istediğiniz belirli verilere gitmek için adımları özetleyen kayıtların
Value.NativeQuerylistesini içerir. Her kayıtta, bu gezintinin istediğiniz hedefe ulaşması için hangi parametrelerin gerekli olduğunu veya gerekli olduğunu tanımlar. -
DefaultOptions: Bu alan, belirli isteğe bağlı parametrelerin seçenekler kaydına nasıl eklenmesi veya eklenmesi gerektiğini belirlemeye
Value.NativeQueryyardımcı olur. Veri kaynağını sorgularken kullanılabilecek bir dizi varsayılan seçenek sağlar.
NavigasyonAdımları
Gezinti adımlarınız iki gruba ayrılmış olabilir. İlki, son kullanıcı tarafından girilen sunucu veya veritabanının adı gibi değerleri içerir. Bu durumda. İkincisi, veri alma deneyimi sırasında kullanıcıya görüntülenmeyen alanların adı gibi belirli bağlayıcı uygulaması tarafından türetilen değerleri içerir. Bu alanlar, bağlayıcı uygulamanıza bağlı olarak , Name, Kindve diğer alanları içerebilirData.
Bu durumda, iki alandan oluşan yalnızca bir gezinti adımı vardı:
-
Ad: Bu alan, son kullanıcı tarafından sağlanan veritabanının adıdır. Bu durumda,
AdventureWorks2019idi, ancak bu alan her zaman veri alma deneyimi sırasında son kullanıcının girdiği şekliyle, olduğu gibi geçirilmelidir. -
Tür: Bu alan, son kullanıcı tarafından görülmeyecek ve bağlayıcı veya sürücü uygulamasına özgü bilgilerdir. Bu durumda, bu değer hangi nesne türüne erişilmesi gerektiğini tanımlar. Bu uygulama için, bu alan dizesini
Databaseiçeren sabit bir değer olacaktır.
Bu bilgiler aşağıdaki koda çevrilir. Bu kod kaydınıza SqlODBC.Publish yeni bir alan olarak eklenmelidir.
NativeQueryProperties = [
NavigationSteps = {
[
Indices = {
[
FieldDisplayName = "database",
IndexName = "Name"
],
[
ConstantValue = "Database",
IndexName = "Kind"
]
},
FieldAccess = "Data"
]
}
]
Önemli
Alan adları büyük/küçük harfe duyarlıdır ve yukarıdaki örnekte gösterildiği gibi kullanılmalıdır. Tüm ConstantValue, IndexName veya FieldDisplayName alanlarına geçirilen bilgiler bağlayıcının M kodundan türetilmelidir.
Kullanıcının girdiği değerlerden alınacak değerler için FieldDisplayName ve IndexName çiftini kullanabilirsiniz. Önceden tanımlanmış veya sabit olup, son kullanıcı tarafından geçirilemeyen değerler için ConstantValue ve IndexName ikilisini kullanabilirsiniz. Bu anlamda NavigationSteps kaydı iki alandan oluşur:
-
Dizinler: İşlevin hedefini içeren kayda gitmek için
Value.NativeQueryhangi alanların ve hangi değerlerin kullanılacağını tanımlar. - FieldAccess: Hedefi tutan alanı tanımlar ve bu genellikle bir tablodur.
DefaultOptions
DefaultOptions alanı, bağlayıcınız için yerel sorgu özelliğini kullanırken isteğe bağlı parametreleri Value.NativeQuery işlevine geçirmenizi sağlar.
Sorunuzu katlamadan yerel bir sorgu yürütmek için, ve bağlayıcınızın sorgu katlama özelliklerine sahip olduğunu varsayarak, EnableFolding = true için aşağıdaki örnek kodu kullanabilirsiniz.
NativeQueryProperties = [
NavigationSteps = {
[
Indices = {
[
FieldDisplayName = "database",
IndexName = "Name"
],
[
ConstantValue = "Database",
IndexName = "Kind"
]
},
FieldAccess = "Data"
]
},
DefaultOptions = [
EnableFolding = true
]
]
Bu değişiklikler gerçekleştiğinde bağlayıcıyı derleyin ve test ve doğrulama için Power BI Desktop'a yükleyin.
Bağlayıcıyı test edin ve doğrulayın
Yeni özel bağlayıcınız hazır durumda olan Power BI Desktop'ta Veri Al deneyiminden bağlayıcıyı başlatın. Bağlayıcıyı başlatırken, iletişim kutusunun artık Yerel sorgu adlı uzun bir metin alanına sahip olduğunu ve parantez içinde çalışması için gerekli alanlara sahip olduğunu fark edeceksiniz. Bağlayıcıyı test ederken daha önce girdiğiniz sunucu, veritabanı ve SQL deyimi için aynı değerleri girin.
Tamam'ı seçtikten sonra, yürütülen yerel sorgunun tablo önizlemesi yeni bir iletişim kutusunda gösterilir.
Tamam'ı seçin. Artık bağlayıcınızın daha fazla testini gerektiği gibi yapabileceğiniz Power Query düzenleyicisinin içine yeni bir sorgu yüklenir.
Uyarı
Bağlayıcınızın sorgu katlama özellikleri varsa ve EnableFolding=true öğesini Value.NativeQuery için isteğe bağlı kaydın bir parçası olarak açıkça tanımladıysanız, daha fazla dönüşümün kaynağa geri katlanıp katlanmadığını denetleyerek bağlayıcınızı Power Query düzenleyicisinde daha kapsamlı bir şekilde test edebilirsiniz.