FHIR lekérdezés összecsukása
A Power Query-összecsukás az a mechanizmus, amelyet a Power Query-összekötő használ az adatátalakítások adatforrásnak küldött lekérdezésekké alakításához. Ez az összecsukási mechanizmus lehetővé teszi, hogy a Power Query a lehető legtöbb adatkijelölést kitöltődjön az adatforrásba ahelyett, hogy nagy mennyiségű szükségtelen adatot szeretne beolvasni, hogy azokat csak az ügyfélben dobja el. Az FHIR Power Query-összekötője magában foglalja a lekérdezések összecsukási képességeit, de az FHIR-keresés jellegéből adódóan különös figyelmet kell fordítani a Power Query-kifejezésekre, hogy a lekérdezések összecsukása lehetőség szerint történjen. Ez a cikk az FHIR Power Query összecsukásának alapjait ismerteti, és irányelveket és példákat tartalmaz.
FHIR és lekérdezés összecsukása
Tegyük fel, hogy létrehoz egy lekérdezést, amely lekéri a "Patient" erőforrásokat egy FHIR-kiszolgálóról, és érdeklik az 1980 előtt született betegek. Az ilyen lekérdezések a következőképpen nézhetnek ki:
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"
Ahelyett, hogy lekérte volna az összes betegerőforrást az FHIR-kiszolgálóról, és szűrte volna őket az ügyfélben (Power BI), hatékonyabb egy keresési paraméterrel rendelkező lekérdezést küldeni az FHIR-kiszolgálóra:
GET https://myfhirserver.azurehealthcareapis.com/Patient?birthdate=lt1980-01-01
Egy ilyen lekérdezéssel az ügyfél csak az érdeklődésre számot tartó betegeket fogadná, és nem kellene elvetnie az ügyfél adatait.
A születési dátum példájában a lekérdezés összecsukása egyszerű. Az FHIR-ben azonban ez általában kihívást jelent, mivel a keresési paraméterek nevei nem mindig felelnek meg az adatmezők nevének, és gyakran több adatmező is hozzájárul egyetlen keresési paraméterhez.
Vegyük például az erőforrást és a Observation
category
mezőt. A Observation.category
mező egy CodeableConcept
FHIR-ben megadott mezősystem
, amely tartalmaz coding
és code
mezőket is tartalmaz (többek között). Tegyük fel, hogy csak az életjelek érdeklik. Érdeklik a megfigyelések, ahol Observation.category.coding.code = "vital-signs"
, de az FHIR keresés hasonlítana https://myfhirserver.azurehealthcareapis.com/Observation?category=vital-signs
.
Ha összetettebb esetekben szeretné elérni a lekérdezések összecsukását, az FHIR Power Query-összekötője megfelel a Power Query-kifejezéseknek a kifejezésminták listájával, és lefordítja őket a megfelelő keresési paraméterekre. A kifejezésminták az FHIR specifikációból jönnek létre.
Ez a kifejezésmintákkal való egyeztetés akkor működik a legjobban, ha a kijelölési kifejezések (szűrés) a lehető leghamarabb befejeződnek az adatátalakítási lépések során, mielőtt bármilyen más formázást végeznénk az adatokon.
Feljegyzés
Annak érdekében, hogy a Power Query-motor a lehető legnagyobb eséllyel hajtsa végre a lekérdezések összecsukását, minden adatkijelölési kifejezést el kell végeznie az adatok bármilyen formázása előtt.
Lekérdezés-összecsukási példa
A lekérdezések hatékony összecsukásának szemléltetéséhez végigvezetjük a példát arra, hogy az összes alapvető jelet lekértük a megfigyelési erőforrásból. Ennek intuitív módja a mező kibontása, majd a Observation.category
szűrés Observation.category.coding
. A lekérdezés a következőképpen nézne ki:
// 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
Sajnos a Power Query motor már nem ismerte fel ezt a category
keresési paraméterhez leképezett kiválasztási mintaként, de ha a lekérdezést a következőre strukturálja:
// 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
A rendszer elküldi a keresési lekérdezést /Observation?category=vital-signs
az FHIR-kiszolgálónak, ami csökkenti az ügyfél által a kiszolgálótól kapott adatok mennyiségét.
Míg az első és a második Power Query-kifejezés ugyanazt az adatkészletet eredményezi, az utóbbi általában jobb lekérdezési teljesítményt eredményez. Fontos megjegyezni, hogy a lekérdezés második, hatékonyabb verziója nem kérhető le pusztán a grafikus felhasználói felülettel (GUI) végzett adatalakítással. A lekérdezést a Power Query speciális szerkesztőjében kell megírni.
A kezdeti adatfeltárást a grafikus felhasználói felület lekérdezésszerkesztőjével végezheti el, de javasoljuk, hogy a lekérdezést a lekérdezés összecsukásával újrabontással hajtsa végre. A szelektív lekérdezéseket (szűrést) a lehető leghamarabb el kell végezni.
Összecsukható minták keresése
Az FHIR Power Query-összekötője csak akkor hajthat végre lekérdezés-összecsukást, ha a Power Query-kifejezések az FHIR-specifikációban meghatározott ismert keresési paraméterekre lesznek megfeleltetve. Ha kíváncsi arra, hogy lehetséges-e a lekérdezések összecsukása, javasoljuk, hogy tekintse meg az FHIR specifikációját. Minden erőforrás a specifikációs oldal alján található keresési paramétereket sorolja fel. Az összecsukható lekérdezési minták oldalán példákat is találhat az összecsukható Power Query-kifejezések írására az FHIR-hez.
Lekérdezés-összecsukás hibakeresése
Ha meg szeretné állapítani, hogy egy adott Power Query-kifejezés van-e hajtva, és hogy mi az eredményül kapott FHIR keresési kifejezés, elindíthatja a Fiddlert a lekérdezések alakítása közben a Power BI Desktopban.
Összegzés
A lekérdezések összecsukása hatékonyabb Power Query-kifejezéseket biztosít. A megfelelően kialakított Power Query lehetővé teszi a lekérdezések összecsukását, és így az adatszűrési terhek nagy részét kiterheli az adatforrásba.
Következő lépések
Ebből a cikkből megtudhatja, hogyan használhatja a lekérdezés-összecsukást az FHIR Power Query-összekötőjében. Ezután ismerkedjen meg az FHIR Power Query összecsukási mintáinak listájával.