Adatok másolása az Azure API for FHIR-ből a Azure Synapse Analyticsbe
Ebben a cikkben három módszert ismerhet meg az adatok másolására az Azure API for FHIR-ből a Azure Synapse Analyticsbe, amely egy korlátlan elemzési szolgáltatás, amely egyesíti az adatintegrációt, a vállalati adattárházakat és a big data-elemzéseket.
- Az FHIR használata Synapse Sync Agent OSS-eszközhöz
- Az FHIR használata CDM-folyamatgenerátor OSS-eszközhöz
- $export használata és adatok betöltése a Synapse-ba a T-SQL használatával
Az FHIR használata Synapse Sync Agent OSS-eszközhöz
Megjegyzés
Az FHIR to Synapse Sync Agent egy nyílt forráskód eszköz, amely mit licenccel érhető el, és az Azure-szolgáltatásokhoz készült Microsoft SLA nem fedi le.
Az FHIR to Synapse Sync Agent egy Microsoft OSS-projekt, amely az MIT-licenc alatt jelent meg. Ez egy Azure-függvény, amely adatokat nyer ki egy FHIR-kiszolgálóról FHIR-erőforrás API-k használatával, hierarchikus Parquet-fájlokká alakítja, és közel valós időben írja azokat az Azure Data Lake-be. Ez egy szkriptet is tartalmaz, amely külső táblákat és nézeteket hoz létre a Synapse kiszolgáló nélküli SQL-készletében , amely a Parquet-fájlokra mutat.
Ez a megoldás lehetővé teszi a teljes FHIR-adatok lekérdezését olyan eszközökkel, mint a Synapse Studio, az SSMS és a Power BI. A Parquet-fájlokat közvetlenül egy Synapse Spark-készletből is elérheti. Ezt a megoldást akkor érdemes megfontolnia, ha az összes FHIR-adathoz közel valós időben szeretne hozzáférni, és halasztani szeretné az egyéni átalakítást az alárendelt rendszerekre.
A telepítési és használati utasításokért kövesse az OSS dokumentációját .
Az FHIR használata a CDM-folyamatgenerátor OSS-eszközéhez
Megjegyzés
Az FHIR–CDM-folyamatgenerátor egy mit licenc alatt kiadott nyílt forráskód eszköz, amelyre nem vonatkozik az Azure-szolgáltatásokhoz készült Microsoft SLA.
Az FHIR–CDM-folyamatgenerátor egy MIT-licenc alatt kiadott Microsoft OSS-projekt. Ez egy olyan eszköz, amely ADF-folyamatot hoz létre az adatok pillanatképének egy FHIR-kiszolgálóról történő másolásához $export API-val, csv formátumra alakítja át, és a 2. generációs Azure Data Lake Storage CDM-mappába ír. Az eszközhöz egy felhasználó által létrehozott konfigurációs fájlra van szükség, amely utasításokat tartalmaz az FHIR-erőforrások és -mezők táblákba való kivetítéséhez és összesimításához. A Synapse-munkaterület alsóbb rétegbeli folyamatának létrehozására vonatkozó utasításokat követve adatokat helyezhet át a CDM-mappából a dedikált Synapse SQL-készletbe.
Ezzel a megoldással táblázatos formátumba alakíthatja az adatokat a CDM-mappába való írás során. Ezt a megoldást akkor érdemes megfontolnia, ha az FHIR-adatokat egyéni sémává szeretné átalakítani az FHIR-kiszolgálóból való kinyerés után.
A telepítési és használati utasításokért kövesse az OSS dokumentációját .
Exportált adatok betöltése a Synapse-be a T-SQL használatával
Ebben a megközelítésben az FHIR művelettel FHIR-erőforrásokat $export
másol egy Azure Data Lake Gen 2 (ADL Gen 2) blobtárolóbaNDJSON
formátumban. Ezt követően a T-SQL használatával betölti a tárolóból származó adatokat a Synapse kiszolgáló nélküli vagy dedikált SQL-készleteibe . Ezeket a lépéseket synapse-folyamatokkal robusztus adatáthelyezési folyamattá alakíthatja.
Adatok másolása a használatával $export
$export
Konfigurálás az FHIR-kiszolgálón
Az FHIR-hez készült Azure API implementálja az $export
FHIR-specifikáció által meghatározott műveletet az FHIR-adatok teljes vagy szűrt részhalmazának formátumba NDJSON
való exportálásához. Emellett támogatja az azonosított exportálást , hogy anonimizálja az FHIR-adatokat az exportálás során.
Az FHIR-adatok Azure Blob Storage-ba való exportálásához először konfigurálnia kell az FHIR-kiszolgálót, hogy adatokat exportáljon a tárfiókba. Engedélyeznie kell (1) a felügyelt identitást, (2) lépjen a tárfiókban található Access Control, és adjon hozzá szerepkör-hozzárendelést, (3) válassza ki a tárfiókját a számára$export
. További lépésről lépésre itt talál.
Konfigurálhatja úgy a kiszolgálót, hogy bármilyen Azure-tárfiókba exportálja az adatokat, de a Synapse-hez való legjobb igazítás érdekében javasoljuk, hogy exportáljon az ADL Gen 2-be.
A parancs használata $export
Az FHIR-kiszolgáló konfigurálása után a dokumentációt követve exportálhatja az FHIR-erőforrásokat Rendszer, Beteg vagy Csoport szinten. Exportálhatja például a betegekhez kapcsolódó összes FHIR-adatot a Group
következő $export
paranccsal, amelyben megadhatja az ADL Gen 2 blobtároló nevét a mezőben {{BlobContainer}}
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
A fenti hívás paraméterével $export
is _type
korlátozhatja az exportálni kívánt erőforrásokat. A következő hívás például csak Patient
a , MedicationRequest
és Observation
erőforrásokat exportálja:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
A különböző támogatott paraméterekkel kapcsolatos további információkért tekintse meg $export
a lekérdezési paraméterek oldalszakaszát.
A Synapse használata elemzéshez
Synapse-munkaterület létrehozása
A Synapse használata előtt szüksége lesz egy Synapse-munkaterületre. Létre fog hozni egy Azure Synapse Analytics-szolgáltatást a Azure Portal. További részletes útmutatót itt talál. A munkaterület létrehozásához fiókra van szükség ADLSGEN2
. A Azure Synapse-munkaterület ezt a tárfiókot fogja használni a Synapse-munkaterület adatainak tárolására.
Miután létrehozott egy munkaterületet, megtekintheti a munkaterületet Synapse Studio, ha bejelentkezik a munkaterületre a webhelyenhttps://web.azuresynapse.net, vagy elindítja a Synapse Studio a Azure Portal.
Társított szolgáltatás létrehozása az Azure Storage és a Synapse között
Ha az adatokat a Synapse-be szeretné másolni, létre kell hoznia egy társított szolgáltatást, amely összekapcsolja az Azure Storage-fiókját, ahol exportálta az adatokat a Synapse-nal. További részletes útmutatást itt talál.
- A Synapse Studio tallózással lépjen a Kezelés lapra, és a Külső kapcsolatok területen válassza a Társított szolgáltatások lehetőséget.
- Új társított szolgáltatás hozzáadásához válassza az Új lehetőséget.
- Válassza Azure Data Lake Storage Gen2 lehetőséget a listából, és válassza a Folytatás lehetőséget.
- Adja meg a hitelesítési hitelesítő adatait. Miután végzett, válassza a Létrehozás lehetőséget.
Most, hogy társított szolgáltatással rendelkezik az ADL Gen 2-tároló és a Synapse között, készen áll a Synapse SQL-készletek használatára az FHIR-adatok betöltéséhez és elemzéséhez.
Döntés a kiszolgáló nélküli és a dedikált SQL-készlet között
Azure Synapse Analytics két különböző SQL-készletet, kiszolgáló nélküli SQL-készletet és dedikált SQL-készletet kínál. A kiszolgáló nélküli SQL-készlet rugalmasan kérdezi le az adatokat közvetlenül a blobtárolóban a kiszolgáló nélküli SQL-végpont használatával, erőforrás-kiépítés nélkül. A dedikált SQL-készlet nagy teljesítményű és egyidejű feldolgozási képességgel rendelkezik, és nagyvállalati szintű adattárház-funkciókhoz ajánlott. A két SQL-készletről további információt az SQL-architektúra Synapse dokumentációs oldalán talál.
Kiszolgáló nélküli SQL-készlet használata
Mivel kiszolgáló nélküli, nincs szükség infrastruktúra beállítására vagy fürtök karbantartására. A munkaterület létrehozása után azonnal megkezdheti az adatok lekérdezését Synapse Studio.
A következő lekérdezéssel például táblázatos szerkezetűvé alakíthatja a kijelölt mezőket Patient.ndjson
:
SELECT * FROM
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson',
FORMAT = 'csv',
FIELDTERMINATOR ='0x0b',
FIELDQUOTE = '0x0b')
WITH (doc NVARCHAR(MAX)) AS rows
CROSS APPLY OPENJSON(doc)
WITH (
ResourceId VARCHAR(64) '$.id',
Active VARCHAR(10) '$.active',
FullName VARCHAR(100) '$.name[0].text',
Gender VARCHAR(20) '$.gender',
...
)
A fenti lekérdezésben a függvény hozzáfér az OPENROWSET
Azure Storage fájljaihoz, elemzi a JSON-szöveget, OPENJSON
és sorként és oszlopként adja vissza a JSON bemeneti tulajdonságait. A lekérdezés minden végrehajtásakor a kiszolgáló nélküli SQL-készlet beolvassa a fájlt a blobtárolóból, elemzi a JSON-t, és kinyeri a mezőket.
Az eredményeket Parquet formátumban is létrehozhatja külső táblában , hogy jobb lekérdezési teljesítményt nyújtson, ahogy az alább látható:
-- Create External data source where the parquet file will be written
CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
LOCATION = 'https://{{youraccount}}.blob.core.windows.net/{{exttblcontainer}}'
);
GO
-- Create External File Format
CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO
CREATE EXTERNAL TABLE [dbo].[Patient] WITH (
LOCATION = 'PatientParquet/',
DATA_SOURCE = [MyDataSource],
FILE_FORMAT = [ParquetFF]
) AS
SELECT * FROM
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson'
-- Use rest of the SQL statement from the previous example --
Dedikált SQL-készlet használata
A dedikált SQL-készlet támogatja a felügyelt táblákat és a memóriabeli teljesítmény hierarchikus gyorsítótárát. Importálhat big data-adatokat egyszerű T-SQL-lekérdezésekkel, majd az elosztott lekérdezési motor segítségével nagy teljesítményű elemzéseket futtathat.
A tárolóból egy dedikált SQL-készletbe való adatbetöltés legegyszerűbb és leggyorsabb módja a COPY
T-SQL parancsának használata, amely képes CSV-, Parquet- és ORC-fájlok olvasására. Az alábbi példa lekérdezéshez hasonlóan az COPY
paranccsal töltse be a NDJSON
sorokat egy táblázatos struktúrába.
-- Create table with HEAP, which is not indexed and does not have a column width limitation of NVARCHAR(4000)
CREATE TABLE StagingPatient (
Resource NVARCHAR(MAX)
) WITH (HEAP)
COPY INTO StagingPatient
FROM 'https://{{yourblobaccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson'
WITH (
FILE_TYPE = 'CSV',
ROWTERMINATOR='0x0a',
FIELDQUOTE = '',
FIELDTERMINATOR = '0x00'
)
GO
Miután a fenti táblázatban a JSON-sorok StagingPatient
meg vannak osztva, a függvény használatával OPENJSON
különböző táblázatos formátumokat hozhat létre az adatokból, és az eredményeket táblákba tárolhatja. Íme egy minta SQL-lekérdezés, amellyel táblát Patient
hozhat létre az erőforrás néhány mezőjének Patient
kinyerésével:
SELECT RES.*
INTO Patient
FROM StagingPatient
CROSS APPLY OPENJSON(Resource)
WITH (
ResourceId VARCHAR(64) '$.id',
FullName VARCHAR(100) '$.name[0].text',
FamilyName VARCHAR(50) '$.name[0].family',
GivenName VARCHAR(50) '$.name[0].given[0]',
Gender VARCHAR(20) '$.gender',
DOB DATETIME2 '$.birthDate',
MaritalStatus VARCHAR(20) '$.maritalStatus.coding[0].display',
LanguageOfCommunication VARCHAR(20) '$.communication[0].language.text'
) AS RES
GO
Következő lépések
Ebben a cikkben megismerhette az FHIR-adatok Synapse-ba másolásának három különböző módját.
Ezután megtudhatja, hogyan azonosíthatja az FHIR-adatokat a Synapse-ba való exportálás során a PHI védelme érdekében.
Az FHIR® a HL7 bejegyzett védjegye, és a HL7 engedélyével használják.