이 페이지에서는 탐색 및 분석을 위해 FHIR 리소스를 BigQuery로 일괄 내보내는 방법을 설명합니다. 내보내기 작업은 FHIR 저장소의 각 FHIR 리소스 유형에 대해 하나의 BigQuery 테이블을 만듭니다.
쿼리 성능을 개선하고 비용을 줄이려면 FHIR 리소스를 파티션을 나눈 테이블로 내보내는 것이 좋습니다. 자세한 내용은 파티션을 나눈 테이블로 FHIR 리소스 내보내기를 참조하세요.
일정에 따라 FHIR 리소스를 내보내는 경우 데이터를 증분식으로 내보내는 것이 좋습니다. 자세한 내용은 증분 내보내기를 참고하세요.
BigQuery 권한 설정
FHIR 리소스를 BigQuery로 내보내려면 먼저 Cloud Healthcare 서비스 에이전트 서비스 계정에 추가 권한을 부여해야 합니다. 자세한 내용은 FHIR 저장소 BigQuery 권한을 참조하세요.
내보내기 동작 이해
내보내기 작업의 동작은 다음에 따라 달라집니다.
- 대상 테이블이 존재하는지 여부
force
필드 설정 여부WriteDisposition
에 enum을 지정할지 여부. enum을 지정하는 경우force
필드를 설정하지 마세요.
각 경우의 동작은 다음과 같습니다.
- 대상 테이블이 있고
force
가true
로 설정된 경우: 내보내기 작업이 기존 테이블을 덮어씁니다. - 대상 테이블이 있고
force
가false
로 설정된 경우: 오류가 발생합니다. - 대상 테이블이 없음: 내보내기 작업은
force
필드 지정 여부에 관계없이 새 테이블을 만듭니다. 대상 테이블이 있고
WriteDisposition
를WRITE_TRUNCATE
또는WRITE_APPEND
로 설정하면 오류를 반환하는 대신 내보내기 작업이 성공합니다.
이 작업은 FHIR 저장소의 각 리소스 유형에 대해 하나의 BigQuery 테이블을 출력합니다.
FHIR 리소스 일괄 내보내기
다음 샘플은 FHIR 리소스를 BigQuery 테이블로 내보내는 방법을 보여줍니다.
BigQuery 대상을 지정할 때는 정규화된 URI를 사용합니다.
bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID
콘솔
Google Cloud 콘솔을 사용하여 FHIR 리소스를 BigQuery로 내보내려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 데이터 세트 페이지로 이동합니다.
내보낼 데이터가 있는 FHIR 저장소가 위치한 데이터 세트를 클릭합니다.
FHIR 저장소와 동일한 행에서 조치 목록을 열고 내보내기를 선택합니다.
표시되는 FHIR 리소스 내보내기 페이지에서 대상 선택 섹션을 찾습니다. BigQuery 테이블을 선택합니다.
대상 테이블 쓰기 처리 섹션에서 다음 옵션 중 하나를 선택하여 내보내기 작업의 동작을 결정합니다.
- 대상 테이블이 비어 있는 경우에만 데이터 내보내기:
WriteDisposition
에서WRITE_EMPTY
enum을 선택하는 것과 동일합니다. - 대상 테이블에 데이터 추가:
WriteDisposition
에서WRITE_APPEND
enum을 선택하는 것과 동일합니다. - FHIR 리소스를 작성하기 전에 대상 테이블의 모든 기존 데이터 삭제:
WriteDisposition
에서WRITE_TRUNCATE
enum을 선택하는 것과 동일합니다.
- 대상 테이블이 비어 있는 경우에만 데이터 내보내기:
FHIR 내보내기 구성 섹션에서 찾아보기를 클릭하여 BigQuery 프로젝트 및 데이터 세트를 선택하세요.
스키마 유형 드롭다운에서 BigQuery 테이블의 출력 스키마를 선택합니다. 사용 가능한 스키마는 다음과 같습니다.
- 분석. FHIR 기반 SQL 문서를 기반으로 하는 스키마. BigQuery는 테이블당 10,000개의 열만 허용하므로
Parameters.parameter.resource
,Bundle.entry.resource
,Bundle.entry.response.outcome
필드의 스키마는 생성되지 않습니다. - 분석 V2. 분석 스키마와 유사한 스키마로, 다음이 지원됩니다. 분석 V2 스키마는 분석 스키마보다 대상 테이블에서 더 많은 공간을 사용합니다.
- 분석. FHIR 기반 SQL 문서를 기반으로 하는 스키마. BigQuery는 테이블당 10,000개의 열만 허용하므로
재귀 구조 깊이 슬라이더에서 깊이 수준을 선택하여 출력 스키마에서 모든 재귀 구조의 깊이를 설정합니다. 기본적으로 재귀 값은 2입니다.
자세한 내용은
recursiveStructureDepth
를 참조하세요.내보내기를 클릭하여 FHIR 리소스를 BigQuery로 내보냅니다.
- 작업 상태를 추적하려면 작업 탭을 클릭합니다. 작업이 완료되면 다음과 같은 표시가 나타납니다.
- 장기 실행 작업 상태 섹션의 확인 제목 아래에 녹색 체크표시가 있습니다.
- 개요 섹션에 작업 ID와 같은 행에 녹색 체크표시와 확인 표시기가 있습니다.
gcloud
FHIR 리소스를 BigQuery로 내보내려면 gcloud healthcare fhir-stores export bq
명령어를 실행합니다.
FHIR 리소스를 내보냅니다:
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- LOCATION: 데이터 세트 위치
- DATASET_ID: FHIR 저장소의 상위 데이터 세트
- FHIR_STORE_ID: FHIR 저장소 ID
- BIGQUERY_DATASET_ID: FHIR 리소스를 내보내는 기존 BigQuery 데이터 세트의 이름
- SCHEMA_TYPE:
SchemaType
의 값. 다음 값 중 하나를 사용합니다.analytics
. FHIR 기반 SQL 문서를 기반으로 하는 스키마. BigQuery는 테이블당 10,000개의 열만 허용하므로Parameters.parameter.resource
,Bundle.entry.resource
,Bundle.entry.response.outcome
필드의 스키마는 생성되지 않습니다.analytics_v2
.analytics
와 유사한 스키마로서 다음에 대한 지원이 추가됨analytics-v2
는analytics
보다 대상 테이블에서 더 많은 공간을 사용합니다.
- WRITE_DISPOSITION:
WriteDisposition
의 값. 다음 값 중 하나를 사용합니다.write-empty
. 대상 BigQuery 테이블이 비어 있는 경우에만 데이터를 내보냄write-truncate
. FHIR 리소스를 작성하기 전에 BigQuery 테이블에서 기존 데이터 모두 삭제write-append
. BigQuery 테이블에 데이터 추가
- FHIR_RESOURCE_TYPE: 선택적 필드. 이러한 유형의 FHIR 리소스만 내보내려면 쉼표로 구분된 하나 이상의 FHIR 리소스 유형을 지정하세요.
- SINCE_TIMESTAMP: 선택적 필드. 특정 시간 이후에 업데이트된 FHIR 리소스만 내보내려면
YYYY-MM-DDThh:mm:ss.sss+zz:zz
형식으로 값을 지정합니다. 시간을 초 단위로 지정하고 시간대를 포함합니다. 예를 들어2015-02-07T13:28:17.239+02:00
및2017-01-01T00:00:00Z
는 유효한 시간입니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud healthcare fhir-stores export bq FHIR_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID \ --schema-type=SCHEMA_TYPE \ --write-disposition=WRITE_DISPOSITION \ --resource-type=FHIR_RESOURCE_TYPE \ --since=SINCE_TIMESTAMP
Windows(PowerShell)
gcloud healthcare fhir-stores export bq FHIR_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID ` --schema-type=SCHEMA_TYPE ` --write-disposition=WRITE_DISPOSITION ` --resource-type=FHIR_RESOURCE_TYPE ` --since=SINCE_TIMESTAMP
Windows(cmd.exe)
gcloud healthcare fhir-stores export bq FHIR_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-dataset=bq://PROJECT_ID.BIGQUERY_DATASET_ID ^ --schema-type=SCHEMA_TYPE ^ --write-disposition=WRITE_DISPOSITION ^ --resource-type=FHIR_RESOURCE_TYPE ^ --since=SINCE_TIMESTAMP
name
필드에 작업 이름을 출력합니다.OPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.응답
Request issued for: [FHIR_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
작업에 대한 세부정보를 보려면
gcloud healthcare operations describe
를 실행하고 응답에서 OPERATION_ID를 제공합니다.아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DATASET_ID: 데이터 세트 ID
- LOCATION: 데이터 세트 위치
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows(PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows(cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
다음과 비슷한 응답이 표시됩니다.
응답
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.fhir.FhirStoreService.ExportResources_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.fhir.ExportResourcesResponse'
REST
FHIR 리소스를 BigQuery로 내보내려면 projects.locations.datasets.fhirStores.export
메서드를 사용합니다.
FHIR 리소스를 내보냅니다:
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- LOCATION: 데이터 세트 위치
- DATASET_ID: FHIR 저장소의 상위 데이터 세트
- FHIR_STORE_ID: FHIR 저장소 ID
- BIGQUERY_DATASET_ID: FHIR 리소스를 내보내는 기존 BigQuery 데이터 세트의 이름
- SCHEMA_TYPE:
SchemaType
의 값. 다음 값 중 하나를 사용합니다.ANALYTICS
. FHIR 기반 SQL 문서를 기반으로 하는 스키마. BigQuery는 테이블당 10,000개의 열만 허용하므로Parameters.parameter.resource
,Bundle.entry.resource
,Bundle.entry.response.outcome
필드의 스키마는 생성되지 않습니다.ANALYTICS_V2
.ANALYTICS
와 유사한 스키마로서 다음에 대한 지원이 추가됨
.ANALYTICS_V2
는ANALYTICS
보다 대상 테이블에서 더 많은 공간을 사용합니다
- WRITE_DISPOSITION:
WriteDisposition
의 값. 다음 값 중 하나를 사용합니다.WRITE_EMPTY
. 대상 BigQuery 테이블이 비어 있는 경우에만 데이터를 내보냄WRITE_TRUNCATE
. FHIR 리소스를 작성하기 전에 BigQuery 테이블에서 기존 데이터 모두 삭제WRITE_APPEND
. BigQuery 테이블에 데이터 추가
- FHIR_RESOURCE_TYPE: 선택적 필드. 이러한 유형의 FHIR 리소스만 내보내려면 쉼표로 구분된 하나 이상의 FHIR 리소스 유형을 지정하세요.
- SINCE_TIMESTAMP: 선택적 필드. 특정 시간 이후에 업데이트된 FHIR 리소스만 내보내려면
YYYY-MM-DDThh:mm:ss.sss+zz:zz
형식으로 값을 지정합니다. 시간을 초 단위로 지정하고 시간대를 포함합니다. 예를 들어2015-02-07T13:28:17.239+02:00
및2017-01-01T00:00:00Z
는 유효한 시간입니다.
JSON 요청 본문:
{ "bigqueryDestination": { "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "SCHEMA_TYPE", }, "writeDisposition": "WRITE_DISPOSITION" }, "_type": "FHIR_RESOURCE_TYPE", "_since": "SINCE_TIMESTAMP" }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "bigqueryDestination": { "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "SCHEMA_TYPE", }, "writeDisposition": "WRITE_DISPOSITION" }, "_type": "FHIR_RESOURCE_TYPE", "_since": "SINCE_TIMESTAMP" } EOF
그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "bigqueryDestination": { "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "SCHEMA_TYPE", }, "writeDisposition": "WRITE_DISPOSITION" }, "_type": "FHIR_RESOURCE_TYPE", "_since": "SINCE_TIMESTAMP" } '@ | Out-File -FilePath request.json -Encoding utf8
그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export" | Select-Object -Expand ContentAPI 탐색기
요청 본문을 복사하고 메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 요청 본문을 이 도구에 붙여넣고 다른 필수 필드를 입력한 후 실행을 클릭합니다.
OPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DATASET_ID: 데이터 세트 ID
- LOCATION: 데이터 세트 위치
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.
파티션을 나눈 테이블로 FHIR 리소스 내보내기
FHIR 리소스를 BigQuery 파티션을 나눈 테이블로 내보내려면 FHIR 저장소의 lastUpdatedPartitionConfig
필드에서 TimePartitioning
열거형을 설정하세요.
파티션을 나눈 테이블은 BigQuery 시간 단위로 파티션을 나눈 테이블처럼 작동합니다.
파티션을 나눈 테이블에는 FHIR 리소스의 meta.lastUpdated
필드에서 생성된 meta.lastUpdated
열과 중복되는 lastUpdated
라는 추가 열이 있습니다. BigQuery는 lastUpdated
열을 사용하여 시간, 일, 월, 연도를 기준으로 테이블의 파티션을 나눕니다.
파티션 세부사항을 선택하는 방법에 대한 권장사항은 일, 시간, 월, 연도별 파티션 나누기 선택을 참조하세요.
파티션을 나누지 않은 기존 BigQuery 테이블은 파티션을 나눈 테이블로 변환할 수 없습니다. 환자 리소스 변경사항을 파티션을 나누지 않은 Patients
테이블로 내보낸 다음 나중에 동일한 BigQuery 데이터 세트로 내보내는 테이블 파티션 나누기를 사용하여 새 FHIR 저장소를 만들어도, Cloud Healthcare API는 파티션을 나누지 않은 Patients
테이블로 여전히 데이터를 내보냅니다. 파티션을 나눈 테이블 사용을 시작하려면 기존 Patients
테이블을 삭제하거나 다른 BigQuery 데이터 세트를 사용하세요.
기존 FHIR 저장소 구성에 파티션 나누기를 추가하는 경우에도 파티션을 나누지 않은 기존 테이블로 계속 내보낼 수 있습니다. 하지만 파티션 나누기는 새 테이블에만 적용됩니다.
다음 샘플은 FHIR 리소스를 BigQuery 파티션을 나눈 테이블로 내보내는 방법을 보여줍니다.
콘솔
Google Cloud 콘솔과 gcloud CLI는 이 작업을 지원하지 않습니다. 대신 curl
, PowerShell 또는 사용자가 선호하는 언어를 사용합니다.
gcloud
Google Cloud 콘솔과 gcloud CLI는 이 작업을 지원하지 않습니다. 대신 curl
, PowerShell 또는 사용자가 선호하는 언어를 사용합니다.
REST
FHIR 리소스를 BigQuery 파티션을 나눈 테이블로 내보내려면 projects.locations.datasets.fhirStores.export
메서드를 사용합니다.
FHIR 리소스를 내보냅니다:
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- LOCATION: 데이터 세트 위치
- DATASET_ID: FHIR 저장소의 상위 데이터 세트
- FHIR_STORE_ID: FHIR 저장소 ID
- BIGQUERY_DATASET_ID: FHIR 리소스를 내보내는 기존 BigQuery 데이터 세트의 이름
- SCHEMA_TYPE:
SchemaType
의 값. 다음 값 중 하나를 사용합니다.ANALYTICS
. FHIR 기반 SQL 문서를 기반으로 하는 스키마. BigQuery는 테이블당 10,000개의 열만 허용하므로Parameters.parameter.resource
,Bundle.entry.resource
,Bundle.entry.response.outcome
필드의 스키마는 생성되지 않습니다.ANALYTICS_V2
.ANALYTICS
와 유사한 스키마로서 다음에 대한 지원이 추가됨
.ANALYTICS_V2
는ANALYTICS
보다 대상 테이블에서 더 많은 공간을 사용합니다
- TIME_PARTITION_TYPE: 내보낸 FHIR 리소스를 분할할 세부사항. 다음 값 중 하나를 사용합니다.
HOUR
: 시간별로 데이터 파티션 나누기DAY
: 일별로 데이터 파티션 나누기MONTH
: 월별로 데이터 파티션 나누기YEAR
: 연도별로 데이터 파티션 나누기
- WRITE_DISPOSITION:
WriteDisposition
의 값. 다음 값 중 하나를 사용합니다.WRITE_EMPTY
: BigQuery 테이블이 비어 있는 경우에만 데이터를 내보냅니다.WRITE_TRUNCATE
: DICOM 인스턴스를 작성하기 전 BigQuery 테이블의 모든 기존 데이터를 삭제합니다.WRITE_APPEND
: BigQuery 테이블에 데이터를 추가합니다.
JSON 요청 본문:
{ "bigqueryDestination": { "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "SCHEMA_TYPE", "lastUpdatedPartitionConfig": { "type": "TIME_PARTITION_TYPE" } }, "writeDisposition": "WRITE_DISPOSITION" } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "bigqueryDestination": { "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "SCHEMA_TYPE", "lastUpdatedPartitionConfig": { "type": "TIME_PARTITION_TYPE" } }, "writeDisposition": "WRITE_DISPOSITION" } } EOF
그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "bigqueryDestination": { "datasetUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "SCHEMA_TYPE", "lastUpdatedPartitionConfig": { "type": "TIME_PARTITION_TYPE" } }, "writeDisposition": "WRITE_DISPOSITION" } } '@ | Out-File -FilePath request.json -Encoding utf8
그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export" | Select-Object -Expand ContentAPI 탐색기
요청 본문을 복사하고 메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 요청 본문을 이 도구에 붙여넣고 다른 필수 필드를 입력한 후 실행을 클릭합니다.
다음과 비슷한 JSON 응답이 표시됩니다.
projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DATASET_ID: 데이터 세트 ID
- LOCATION: 데이터 세트 위치
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.
파티션을 나눈 테이블 쿼리
파티션을 나눈 테이블을 쿼리할 때 쿼리 비용을 줄이려면 WHERE
절을 사용하여 시간 단위로 필터링합니다.
예를 들어 PartitionType
enum을 DAY
로 설정했다고 가정해 보겠습니다.
특정 날짜에 업데이트된 환자 리소스에 대해 Patients
테이블을 쿼리하려면 다음 쿼리를 실행합니다.
SELECT * FROM `PROJECT_ID.BIGQUERY_DATASET.Patients` WHERE DATE(lastUpdated) = 'YYYY-MM-DD'
증분 내보내기
타임스탬프를 지정하여 이전에 성공적으로 내보낸 이후 FHIR 스토어에 추가된 FHIR 리소스만 내보낼 수 있습니다. 이렇게 하면 성능이 개선되고 전체 FHIR 스토어를 다시 내보내는 비용이 들지 않으며 내보낸 데이터가 항상 최신 상태로 유지됩니다.
fhirStores.export
를 호출할 때 _since
필드에 타임스탬프를 지정합니다.
BigQuery에서 FHIR 데이터 쿼리 및 분석
BigQuery로 FHIR 리소스를 내보낸 후 내보낸 데이터를 쿼리하고 분석하는 방법에 대한 자세한 내용은 BigQuery에서 FHIR 데이터 분석 솔루션을 참조하세요. 솔루션은 FHIR의 Synthea™ 생성 합성 데이터 공개 데이터 세트를 참조합니다. 이 데이터 세트는 Synthea™에서 생성한 100만 개 이상의 합성 환자 기록을 FHIR 형식으로 호스팅합니다.
FHIR 내보내기 요청 문제 해결
FHIR 내보내기 요청 중에 오류가 발생하면 오류가 Cloud Logging에 기록됩니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.
전체 작업이 오류를 반환하는 경우 장기 실행 작업 문제 해결을 참조하세요.
NULLABLE에서 REPEATED로 열을 변환할 수 없음
이 오류는 반복 확장으로 인해 발생합니다. 이 오류를 해결하려면 ANALYTICS_V2
스키마 유형을 사용합니다. ANALYTICS_V2
를 사용 중이면 두 확장 프로그램 간에 충돌이 발생하거나 확장 프로그램과 다른 필드 간에 충돌이 발생할 수 있습니다.
열 이름은 확장 URL에서 마지막 /
문자 다음에 오는 텍스트에서 생성됩니다. 확장 프로그램 URL이 /resource_field name
같은 값으로 끝나면 충돌이 발생할 수 있습니다. \
이 오류가 다시 발생하지 않도록 하려면 필드 이름이 작성하려는 리소스 필드와 동일한 경우 확장 프로그램을 사용하지 마세요.
다음 단계
- BigQuery에서 데이터 거버넌스 및 보안에 대해 자세히 알아보려면 데이터 보안 및 거버넌스 개요를 참조하세요.