FHIR sorguyu katlama
Power Query katlama , bir Power Query bağlayıcısı tarafından veri dönüştürmelerini veri kaynağına gönderilen sorgulara dönüştürmek için kullanılan mekanizmadır. Bu katlama mekanizması, Power Query'nin yalnızca istemcide atmak için büyük miktarda gereksiz veri almak yerine veri seçiminin mümkün olduğunca büyük bir kısmını veri kaynağına devre dışı bırakmasına olanak tanır. FHIR için Power Query bağlayıcısı sorgu katlama özelliklerini içerir, ancak FHIR aramasının doğası gereği, mümkün olduğunda sorguyu kaynağa döndürmenin gerçekleştirildiğinden emin olmak için Power Query ifadelerine özel dikkat edilmelidir. Bu makalede FHIR Power Query'yi kaynağa döndürmenin temelleri açıklanır ve yönergeler ve örnekler sağlanır.
FHIR ve sorguyu kaynağa döndürme
FHIR sunucusundan "Hasta" kaynaklarını almak için bir sorgu oluşturduğunuzu ve 1980 yılından önce doğan hastalarla ilgilendiğinizi varsayalım. Böyle bir sorgu şöyle görünebilir:
let
Source = Fhir.Contents("https://myfhirserver.azurehealthcareapis.com", null),
Patient1 = Source{[Name="Patient"]}[Data],
#"Filtered Rows" = Table.SelectRows(Patient1, each [birthDate] < #date(1980, 1, 1))
in
#"Filtered Rows"
FHIR sunucusundan tüm Hasta kaynaklarını alıp istemcide (Power BI) filtrelemek yerine, FHIR sunucusuna arama parametresi içeren bir sorgu göndermek daha verimlidir:
GET https://myfhirserver.azurehealthcareapis.com/Patient?birthdate=lt1980-01-01
Böyle bir sorguyla, istemci yalnızca ilgili hastaları alır ve istemcideki verileri atması gerekmez.
Doğum tarihi örneğinde sorguyu katlama basittir. Ancak arama parametresi adları her zaman veri alanı adlarına karşılık gelmez ve sık sık birden çok veri alanı tek bir arama parametresine katkıda bulunmadığından, FHIR'de bu işlem zordur.
Örneğin, kaynağı ve category
alanı ele alalımObservation
. Bu Observation.category
alan, ve code
alanları (diğer alanlar arasında) olan bir alanı olan system
FHIR'dedir coding
CodeableConcept
. Yalnızca yaşamsal işaretlerle ilgilendiğinizi varsayalım. Gözlemler Observation.category.coding.code = "vital-signs"
ile ilgilenirsiniz, ancak FHIR araması gibi https://myfhirserver.azurehealthcareapis.com/Observation?category=vital-signs
görünür.
Daha karmaşık durumlarda sorguyu kaynağa döndürmeyi başarabilmek için FHIR için Power Query bağlayıcısı, Power Query ifadelerini bir ifade desenleri listesiyle eşleştirir ve bunları uygun arama parametrelerine çevirir. İfade desenleri FHIR belirtiminden oluşturulur.
Bu ifade desenleriyle eşleştirme en iyi sonucu veri dönüştürme adımlarında herhangi bir seçim ifadesi (filtreleme) verinin başka bir şekillendirme işleminden önce mümkün olduğunca erken yapıldığında çalışır.
Not
Power Query altyapısına sorguyu katlama için en iyi şansı vermek için, verilerin herhangi bir şekilde şekillendirilmesinden önce tüm veri seçim ifadelerini yapmanız gerekir.
Sorguyu kaynağa döndürme örneği
Verimli sorguyu kaynağa döndürmeyi göstermek için Gözlem kaynağından tüm önemli işaretleri alma örneğini inceleyeceğiz. Bunu gerçekleştirmenin sezgisel yolu, önce alanı genişletmek Observation.category
, sonra da genişletip filtrelemek Observation.category.coding
olacaktır. Sorgu şuna benzer olacaktır:
// Inefficient Power Query
let
Source = Fhir.Contents("https://myfhirserver.azurehealthcareapis.com", null),
Observation = Source{[Name="Observation"]}[Data],
ExpandCategory = Table.ExpandTableColumn(Observation, "category", {"coding"}, {"category.coding"}),
ExpandCoding = Table.ExpandTableColumn(ExpandCategory, "category.coding", {"system", "code"}, {"category.coding.system", "category.coding.code"}),
FilteredRows = Table.SelectRows(ExpandCoding, each ([category.coding.code] = "vital-signs"))
in
FilteredRows
Ne yazık ki, Power Query altyapısı artık bunu arama parametresiyle category
eşlenen bir seçim deseni olarak algılamadı, ancak sorguyu şu şekilde yeniden yapılandırırsanız:
// Efficient Power Query allowing folding
let
Source = Fhir.Contents("https://myfhirserver.azurehealthcareapis.com", null),
Observation = Source{[Name="Observation"]}[Data],
FilteredObservations = Table.SelectRows(Observation, each Table.MatchesAnyRows([category], each Table.MatchesAnyRows([coding], each [code] = "vital-signs"))),
ExpandCategory = Table.ExpandTableColumn(FilteredObservations, "category", {"coding"}, {"category.coding"}),
ExpandCoding = Table.ExpandTableColumn(ExpandCategory, "category.coding", {"system", "code"}, {"category.coding.system", "category.coding.code"})
in
ExpandCoding
Arama sorgusu /Observation?category=vital-signs
FHIR sunucusuna gönderilir ve bu da istemcinin sunucudan aldığı veri miktarını azaltır.
Birinci ve ikinci Power Query ifadeleri aynı veri kümesiyle sonuçlanırken, ikincisi genel olarak daha iyi sorgu performansına neden olur. Sorgunun ikinci, daha verimli sürümünün yalnızca grafik kullanıcı arabirimi (GUI) ile veri şekillendirme yoluyla alınamazsınız. Sorguyu Power Query gelişmiş düzenleyicisine yazmak gerekir.
İlk veri keşfi GUI sorgu düzenleyicisiyle yapılabilir, ancak sorguyu sorguyu kaynağa döndürmeyi göz önünde bulundurarak yeniden düzenlemenizi öneririz. Özellikle, seçmeli sorgular (filtreleme) mümkün olduğunca erken gerçekleştirilmelidir.
Katlama desenlerini bulma
FHIR için Power Query bağlayıcısı yalnızca Power Query ifadeleri FHIR belirtimi tarafından tanımlanan bilinen arama parametreleriyle eşlenirse sorgu katlama gerçekleştirebilir. Sorguyu kaynağa döndürmenin mümkün olup olmadığını merak ediyorsanız FHIR belirtimine bakmanızı öneririz. Her kaynak, belirtim sayfasının en altına doğru bir dizi arama parametresi listeler. FHIR için katlanabilir Power Query İfadeleri yazma örnekleri için katlanabilir sorgu desenleri sayfasına da başvurabilirsiniz.
Sorguyu kaynağa döndürmede hata ayıklama
Belirli bir Power Query ifadesinin katlanıp katlanmadığını ve sonuçta elde edilen FHIR arama ifadesinin ne olduğunu belirlemeye çalışıyorsanız, Power BI Desktop'ta sorguları şekillendirirken Fiddler'ı başlatabilirsiniz.
Özet
Sorguyu katlama, daha verimli Power Query ifadeleri sağlar. Düzgün hazırlanmış bir Power Query, sorguyu kaynağa döndürmeyi ve dolayısıyla veri filtreleme yükünün büyük bir kısmını veri kaynağına boşaltmayı sağlar.
Sonraki adımlar
Bu makalede, FHIR için Power Query bağlayıcısında sorguyu kaynağa döndürmeyi kullanmayı öğrendiniz. Ardından FHIR Power Query katlama desenlerinin listesini inceleyin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin