Kopiowanie danych z usługi FHIR do usługi Azure Synapse Analytics
W tym artykule poznasz trzy sposoby kopiowania danych z usługi FHIR w usługach Azure Health Data Services do usługi Azure Synapse Analytics, która jest nieograniczoną usługą analizy, która łączy integrację danych, magazynowanie danych przedsiębiorstwa i analizę danych big data.
- Używanie platformy FHIR do narzędzia systemu operacyjnego agenta synchronizacji usługi Synapse
- Używanie narzędzia systemu operacyjnego generatora potoków CDM za pomocą standardu FHIR
- Używanie $export i ładowanie danych do usługi Synapse przy użyciu języka T-SQL
Korzystanie z narzędzia systemu operacyjnego agenta synchronizacji FHIR do usługi Synapse
Uwaga
FHIR to Synapse Sync Agent to narzędzie open source wydane w ramach licencji MIT i nie jest objęte umową SLA firmy Microsoft dla usług platformy Azure.
FHIR to Synapse Sync Agent to projekt systemu operacyjnego Microsoft wydany w ramach licencji MIT. Jest to funkcja platformy Azure, która wyodrębnia dane z serwera FHIR przy użyciu interfejsów API zasobów FHIR, konwertuje je na hierarchiczne pliki Parquet i zapisuje je w usłudze Azure Data Lake niemal w czasie rzeczywistym. Zawiera on również skrypt umożliwiający tworzenie zewnętrznych tabel i widoków w bezserwerowej puli SQL usługi Synapse wskazującej pliki Parquet.
To rozwiązanie umożliwia wykonywanie zapytań względem całych danych FHIR przy użyciu narzędzi, takich jak Synapse Studio, SSMS i Power BI. Dostęp do plików Parquet można również uzyskać bezpośrednio z puli usługi Synapse Spark. Należy rozważyć to rozwiązanie, jeśli chcesz uzyskać dostęp do wszystkich danych FHIR niemal w czasie rzeczywistym i chcesz odroczyć transformację niestandardową do systemów podrzędnych.
Postępuj zgodnie z dokumentacją systemu operacyjnego, aby uzyskać instrukcje dotyczące instalacji i użycia.
Korzystanie z narzędzia systemu operacyjnego generatora potoków FHIR do modelu CDM
Uwaga
Generator potoków FHIR to CDM to narzędzie open source wydane w ramach licencji MIT i nie jest objęte umową SLA firmy Microsoft dla usług platformy Azure.
Generator potoków FHIR to CDM jest projektem systemu operacyjnego Microsoft wydanym w ramach licencji MIT. Jest to narzędzie do generowania potoku usługi ADF do kopiowania migawki danych z serwera FHIR przy użyciu interfejsu API $export, przekształcania go w format csv i zapisywania w folderze CDM w Azure Data Lake Storage Gen 2. Narzędzie wymaga pliku konfiguracji utworzonego przez użytkownika zawierającego instrukcje dotyczące projektu i spłaszczania zasobów FHIR oraz pól w tabelach. Możesz również postępować zgodnie z instrukcjami dotyczącymi tworzenia potoku podrzędnego w obszarze roboczym usługi Synapse, aby przenieść dane z folderu CDM do dedykowanej puli SQL usługi Synapse.
To rozwiązanie umożliwia przekształcenie danych w format tabelaryczny podczas zapisywania ich w folderze CDM. Należy rozważyć to rozwiązanie, jeśli chcesz przekształcić dane FHIR w schemat niestandardowy po wyodrębnieniu ich z serwera FHIR.
Postępuj zgodnie z dokumentacją systemu operacyjnego, aby uzyskać instrukcje dotyczące instalacji i użycia.
Ładowanie wyeksportowanych danych do usługi Synapse przy użyciu języka T-SQL
W tym podejściu użyjesz operacji FHIR, aby skopiować zasoby FHIR $export
do magazynu obiektów blob usługi Azure Data Lake Gen 2 (ADL Gen 2) w NDJSON
formacie . Następnie dane są ładowane z magazynu do bezserwerowych lub dedykowanych pul SQL w usłudze Synapse przy użyciu języka T-SQL. Te kroki można przekonwertować na niezawodny potok przenoszenia danych przy użyciu potoków usługi Synapse.
Używanie $export
do kopiowania danych
Konfigurowanie $export
na serwerze FHIR
Serwer FHIR w usługach Azure Health Data Services implementuje $export
operację zdefiniowaną przez specyfikację FHIR w celu wyeksportowania wszystkich lub odfiltrowanego podzestawu danych FHIR w NDJSON
formacie. Ponadto obsługuje de-zidentyfikowane eksportowanie do anonimowości danych FHIR podczas eksportowania.
Aby wyeksportować dane FHIR do usługi Azure Blob Storage, należy najpierw skonfigurować serwer FHIR w celu wyeksportowania danych na konto magazynu. Musisz (1) włączyć tożsamość zarządzaną, (2) przejść do Access Control na koncie magazynu i dodać przypisanie roli, (3) wybierz konto magazynu dla elementu $export
. Więcej informacji krok po kroku można znaleźć tutaj.
Serwer można skonfigurować do eksportowania danych do dowolnego rodzaju konta usługi Azure Storage, ale zalecamy wyeksportowanie do usługi ADL Gen 2 w celu uzyskania najlepszego dopasowania do usługi Synapse.
Za pomocą $export
polecenia
Po skonfigurowaniu serwera FHIR możesz postępować zgodnie z dokumentacją , aby wyeksportować zasoby FHIR na poziomie systemu, pacjenta lub grupy. Na przykład możesz wyeksportować wszystkie dane FHIR powiązane z pacjentami w Group
pliku za pomocą następującego $export
polecenia, w którym określisz nazwę magazynu obiektów blob usługi ADL Gen 2 w polu {{BlobContainer}}
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
Możesz również użyć _type
parametru w wywołaniu $export
powyżej, aby ograniczyć zasoby, które chcesz wyeksportować. Na przykład następujące wywołanie spowoduje wyeksportowanie tylko Patient
zasobów , MedicationRequest
, i Observation
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
Aby uzyskać więcej informacji na temat różnych obsługiwanych parametrów, zapoznaj się z sekcją naszej $export
strony na temat parametrów zapytania.
Korzystanie z usługi Synapse for Analytics
Tworzenie obszaru roboczego usługi Synapse
Przed rozpoczęciem korzystania z usługi Synapse będziesz potrzebować obszaru roboczego usługi Synapse. Utworzysz usługę Azure Synapse Analytics w Azure Portal. Więcej przewodników krok po kroku można znaleźć tutaj. Do utworzenia obszaru roboczego jest potrzebne ADLSGEN2
konto. Twój obszar roboczy Azure Synapse będzie używać tego konta magazynu do przechowywania danych obszaru roboczego usługi Synapse.
Po utworzeniu obszaru roboczego możesz wyświetlić swój obszar roboczy w Synapse Studio, logując się do obszaru roboczego w usłudze https://web.azuresynapse.netlub uruchamiając Synapse Studio w Azure Portal.
Tworzenie połączonej usługi między usługą Azure Storage i usługą Synapse
Aby skopiować dane do usługi Synapse, musisz utworzyć połączoną usługę łączącą konto usługi Azure Storage, w której wyeksportowano dane za pomocą usługi Synapse. Więcej instrukcji krok po kroku można znaleźć tutaj.
- W Synapse Studio przejdź do karty Zarządzanie i w obszarze Połączenia zewnętrzne wybierz pozycję Połączone usługi.
- Wybierz pozycję Nowy , aby dodać nową połączoną usługę.
- Wybierz Azure Data Lake Storage Gen2 z listy i wybierz pozycję Kontynuuj.
- Wprowadź poświadczenia uwierzytelniania. Po zakończeniu wybierz pozycję Utwórz.
Teraz, gdy masz połączoną usługę między magazynem ADL Gen 2 i usługą Synapse, możesz przystąpić do ładowania i analizowania danych FHIR przy użyciu pul synapse SQL.
Wybieranie między bezserwerową i dedykowaną pulą SQL
usługa Azure Synapse Analytics oferuje dwie różne pule SQL, bezserwerową pulę SQL i dedykowaną pulę SQL. Bezserwerowa pula SQL zapewnia elastyczność wykonywania zapytań dotyczących danych bezpośrednio w magazynie obiektów blob przy użyciu bezserwerowego punktu końcowego SQL bez konieczności aprowizacji zasobów. Dedykowana pula SQL ma moc obliczeniową w celu zapewnienia wysokiej wydajności i współbieżności oraz jest zalecana w przypadku możliwości magazynowania danych w skali przedsiębiorstwa. Aby uzyskać więcej informacji na temat dwóch pul SQL, zapoznaj się ze stroną dokumentacji usługi Synapse w sekcji Architektura SQL.
Korzystanie z bezserwerowej puli SQL
Ponieważ jest ona bezserwerowa, nie ma infrastruktury do konfigurowania ani obsługi klastrów. Możesz rozpocząć wykonywanie zapytań o dane z Synapse Studio zaraz po utworzeniu obszaru roboczego.
Na przykład następujące zapytanie może służyć do przekształcania wybranych pól ze Patient.ndjson
struktury tabelarycznej:
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',
...
)
W powyższym OPENROWSET
zapytaniu funkcja uzyskuje dostęp do plików w usłudze Azure Storage i OPENJSON
analizuje tekst JSON i zwraca właściwości wejściowe JSON jako wiersze i kolumny. Za każdym razem, gdy to zapytanie jest wykonywane, bezserwerowa pula SQL odczytuje plik z magazynu obiektów blob, analizuje kod JSON i wyodrębnia pola.
Wyniki można również zmaterializować w formacie Parquet w tabeli zewnętrznej , aby uzyskać lepszą wydajność zapytań, jak pokazano poniżej:
-- 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 --
Korzystanie z dedykowanej puli SQL
Dedykowana pula SQL obsługuje tabele zarządzane i hierarchiczną pamięć podręczną na potrzeby wydajności w pamięci. Dane big data można importować za pomocą prostych zapytań T-SQL, a następnie używać możliwości aparatu zapytań rozproszonych do uruchamiania analizy o wysokiej wydajności.
Najprostszym i najszybszym sposobem ładowania danych z magazynu do dedykowanej puli SQL jest użycie COPY
polecenia w języku T-SQL, które może odczytywać pliki CSV, Parquet i ORC. Tak jak w poniższym przykładowym zapytaniu, użyj COPY
polecenia , aby załadować NDJSON
wiersze do struktury tabelarycznej.
-- 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
Po utworzeniu wierszy JSON w powyższej StagingPatient
tabeli możesz utworzyć różne formaty tabelaryczne danych przy użyciu OPENJSON
funkcji i przechowywać wyniki w tabelach. Oto przykładowe zapytanie SQL do utworzenia Patient
tabeli przez wyodrębnienie kilku pól z Patient
zasobu:
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
Następne kroki
W tym artykule przedstawiono trzy różne sposoby kopiowania danych FHIR do usługi Synapse.
Następnie możesz dowiedzieć się, jak można usunąć identyfikację danych FHIR podczas eksportowania ich do usługi Synapse w celu ochrony funkcji PHI.
FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z pozwoleniem HL7.