Aracılığıyla paylaş


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 codingCodeableConcept. 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-signsgö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.