將 FHIR 資源批次匯出至 BigQuery

本頁面說明如何將 FHIR 資源批次匯出至 BigQuery,以便進行探索和分析。匯出作業會為 FHIR 儲存庫中的每個 FHIR 資源類型建立一個 BigQuery 資料表。

如要提升查詢效能並降低成本,建議您將 FHIR 資源匯出至分區資料表。如需操作說明,請參閱「將 FHIR 資源匯出至分區資料表」。

如果您會依時程匯出 FHIR 資源,建議您採用漸進式方式匯出資料。如需操作說明,請參閱「增量匯出」。

設定 BigQuery 權限

將 FHIR 資源匯出至 BigQuery 前,您必須為 Cloud Healthcare Service Agent 服務帳戶授予額外權限。詳情請參閱「FHIR 商店 BigQuery 權限」。

瞭解匯出行為

匯出作業的行為取決於下列因素:

  • 目的地資料表是否存在。
  • 是否已設定 force 欄位。
  • 您是否在 WriteDisposition 中指定列舉項目。如果您指定了列舉,請勿設定 force 欄位。

每種情況的行為如下:

  • 目標資料表已存在,且 force 設為 true:匯出作業會覆寫現有資料表
  • 目的地資料表已存在,且 force 設為 false:發生錯誤
  • 目標資料表不存在:無論您是否指定 force 欄位,匯出作業都會建立新資料表
  • 目的地資料表存在,且您將 WriteDisposition 設為 WRITE_TRUNCATEWRITE_APPEND:匯出作業成功,而不會傳回錯誤

此作業會針對 FHIR 儲存庫中的每個資源類型輸出一個 BigQuery 資料表。

批次匯出 FHIR 資源

以下範例說明如何將 FHIR 資源匯出至 BigQuery 資料表。

指定 BigQuery 目的地時,請使用完整的 URI:

bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID

控制台

如要使用Google Cloud 主控台將 FHIR 資源匯出至 BigQuery,請完成下列步驟:

  1. 在 Google Cloud 控制台中,前往「Datasets」(資料集) 頁面。

    前往「資料集」

  2. 按一下含有您要匯出資料的 FHIR 儲存庫資料集。

  3. 在 FHIR 儲存庫所在的資料列中,開啟「動作」清單,然後選取「匯出」

  4. 在隨即顯示的「Export FHIR resources」(匯出 FHIR 資源) 頁面中,找出「Select a destination」(選取目的地) 專區。選取「BigQuery 資料表」

  5. 在「Destination table write disposition」部分,選取下列任一選項,決定匯出作業的行為:

    • 只在目的地資料表空白時匯出資料:這等同於在 WriteDisposition 中選取 WRITE_EMPTY 列舉。
    • 將資料附加至目的地資料表:這等同於在 WriteDisposition 中選取 WRITE_APPEND 列舉。
    • 在寫入 FHIR 資源前清除目的地資料表中的所有現有資料:這相當於在 WriteDisposition 中選取 WRITE_TRUNCATE 列舉。
  6. 在「FHIR 匯出設定」部分,按一下「瀏覽」,選取 BigQuery 專案和資料集。

  7. 在「Schema type」下拉式選單中,選取 BigQuery 資料表的輸出結構定義。可用的結構定義如下:

    • Analytics。以 FHIR 上的 SQL 文件為基礎的結構定義。由於 BigQuery 每個資料表最多只能有 10,000 個欄位,因此系統不會為 Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome 欄位產生結構定義。
    • Analytics 第 2 版。與 Analytics 結構定義類似,但新增了以下支援功能:Analytics 第 2 版結構定義在目標資料表中使用的空間比 Analytics 結構定義多。

  8. 在「Recursive Structure Depth」滑桿中選取深度層級,即可設定輸出結構中的所有遞迴結構深度。根據預設,遞迴值為 2。

    詳情請參閱 recursiveStructureDepth

  9. 按一下「Export」,將 FHIR 資源匯出至 BigQuery。

  10. 如要追蹤作業狀態,請按一下「Operations」分頁。作業完成後,系統會顯示下列指示:
    • 「長時間執行的作業狀態」部分的「OK」標題下方有綠色勾號。
    • 「總覽」部分會顯示綠色勾號和「OK」指標,與作業 ID 位於同一行。
    如果發生任何錯誤,請按一下「Actions」,然後點選「View details in Cloud Logging」

gcloud

如要將 FHIR 資源匯出至 BigQuery,請執行 gcloud healthcare fhir-stores export bq 指令。

  1. 匯出 FHIR 資源。

    使用下列任何指令資料之前,請先替換以下項目:

    • PROJECT_ID: Google Cloud 專案的 ID
    • LOCATION:資料集位置
    • DATASET_ID:FHIR 儲存庫的父項資料集
    • FHIR_STORE_ID:FHIR 儲存庫 ID
    • BIGQUERY_DATASET_ID:匯出 FHIR 資源的現有 BigQuery 資料集名稱
    • SCHEMA_TYPESchemaType 的值。請使用下列其中一個值:
      • analytics:以 FHIR 上的 SQL 文件為基礎的結構定義。由於 BigQuery 每個資料表最多只能有 10,000 個資料欄,因此系統不會為 Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome 欄位產生結構定義。
      • analytics_v2:類似 analytics 的結構定義,但新增了對下列項目的支援:

        analytics-v2 在目標資料表中使用的空間比 analytics 多。

    • WRITE_DISPOSITIONWriteDisposition 的值。請使用下列其中一個值:
      • write-empty:只在目的地 BigQuery 資料表空白時匯出資料。
      • write-truncate:在寫入 FHIR 資源前,先清除 BigQuery 資料表中的所有現有資料。
      • write-append:將資料附加到 BigQuery 目的地資料表。
    • FHIR_RESOURCE_TYPE:選填欄位。指定一或多個以半形逗號分隔的 FHIR 資源類型,即可只匯出這些類型的 FHIR 資源。
    • SINCE_TIMESTAMP:選填欄位。請使用 YYYY-MM-DDThh:mm:ss.sss+zz:zz 格式指定值,只匯出特定時間之後更新的 FHIR 資源。請指定精確到秒的時間,並附上時區。舉例來說,2015-02-07T13:28:17.239+02:002017-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
    回應如下:回應會包含長時間執行作業的 ID。如果方法呼叫可能需要大量時間才能完成,系統就會傳回長時間執行的作業。這個指令會輪詢長期執行作業,然後在匯出作業完成後,在 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
    

  2. 如要查看作業的更多詳細資料,請執行 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 方法。

  1. 匯出 FHIR 資源:

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID: Google Cloud 專案的 ID
    • LOCATION:資料集位置
    • DATASET_ID:FHIR 儲存庫的父項資料集
    • FHIR_STORE_ID:FHIR 儲存庫 ID
    • BIGQUERY_DATASET_ID:匯出 FHIR 資源的現有 BigQuery 資料集名稱
    • SCHEMA_TYPESchemaType 的值。請使用下列其中一個值:
      • ANALYTICS:以 FHIR 上的 SQL 文件為基礎的結構定義。由於 BigQuery 每個資料表最多只能有 10,000 個資料欄,因此系統不會為 Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome 欄位產生結構定義。
      • ANALYTICS_V2:類似 ANALYTICS 的結構定義,但新增了對下列項目的支援:

        ANALYTICS_V2 在目的地資料表中使用的空間比 ANALYTICS

    • WRITE_DISPOSITIONWriteDisposition 的值。請使用下列其中一個值:
      • WRITE_EMPTY:只在目的地 BigQuery 資料表空白時匯出資料。
      • WRITE_TRUNCATE:在寫入 FHIR 資源前,先清除 BigQuery 資料表中的所有現有資料。
      • WRITE_APPEND:將資料附加到 BigQuery 目的地資料表。
    • FHIR_RESOURCE_TYPE:選填欄位。指定一或多個以半形逗號分隔的 FHIR 資源類型,即可只匯出這些類型的 FHIR 資源。
    • SINCE_TIMESTAMP:選填欄位。請使用 YYYY-MM-DDThh:mm:ss.sss+zz:zz 格式指定值,只匯出特定時間之後更新的 FHIR 資源。請指定精確到秒的時間,並附上時區。舉例來說,2015-02-07T13:28:17.239+02:002017-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 Content

    APIs Explorer

    複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」

    輸出內容如下。回應會包含長時間執行作業 (LRO) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統就會傳回長時間執行的作業。請記下 OPERATION_ID 的值。您需要在下一個步驟中使用這個值。

  2. 使用 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 Content

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。完成所有必填欄位,然後按一下「執行」

    輸出內容如下。如果回應包含 "done": true,表示長時間執行作業已完成。

將 FHIR 資源匯出至分區資料表

如要將 FHIR 資源匯出至 BigQuery 分區資料表,請在 FHIR 儲存庫的 lastUpdatedPartitionConfig 欄位中設定 TimePartitioning 列舉。

分區資料表的運作方式與 BigQuery 的時間單位分區資料表類似。分區資料表會新增名為 lastUpdated 的資料欄,這是 meta.lastUpdated 資料欄的重複資料欄,該資料欄是從 FHIR 資源中的 meta.lastUpdated 欄位產生。BigQuery 會使用 lastUpdated 資料欄,按小時、日、月或年分割資料表。

如需選取每日、每小時、每月或每年分割的最佳做法,請參閱「選取每日、每小時、每月或每年分割」一文。

您無法將現有的非分區 BigQuery 資料表轉換為分區資料表。如果您將病患資源變更匯出至非分區 Patients 資料表,並在稍後建立新的 FHIR 儲存庫,其中的資料表分區會匯出至相同的 BigQuery 資料集,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 方法。

  1. 匯出 FHIR 資源:

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID: Google Cloud 專案的 ID
    • LOCATION:資料集位置
    • DATASET_ID:FHIR 儲存庫的父項資料集
    • FHIR_STORE_ID:FHIR 儲存庫 ID
    • BIGQUERY_DATASET_ID:匯出 FHIR 資源的現有 BigQuery 資料集名稱
    • SCHEMA_TYPESchemaType 的值。請使用下列其中一個值:
      • ANALYTICS:以 FHIR 上的 SQL 文件為基礎的結構定義。由於 BigQuery 每個資料表最多只能有 10,000 個資料欄,因此系統不會為 Parameters.parameter.resourceBundle.entry.resourceBundle.entry.response.outcome 欄位產生結構定義。
      • ANALYTICS_V2:類似 ANALYTICS 的結構定義,但新增了對下列項目的支援:

        ANALYTICS_V2 在目的地資料表中使用的空間比 ANALYTICS

    • TIME_PARTITION_TYPE:用於分割匯出的 FHIR 資源的精細程度。請使用下列其中一個值:
      • HOUR:按小時分割資料
      • DAY:按天分區資料
      • MONTH:按月份分割資料
      • YEAR:按年分割資料
    • WRITE_DISPOSITIONWriteDisposition 的值。請使用下列其中一個值:
      • 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 Content

    APIs Explorer

    複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」

    您應該會收到如下的 JSON 回應:

  2. 使用 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 Content

    APIs Explorer

    開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。完成所有必填欄位,然後按一下「執行」

    輸出內容如下。如果回應包含 "done": true,表示長時間執行作業已完成。

查詢分區資料表

如要降低查詢分區資料表時的查詢費用,請使用 WHERE 子句,依時間單位篩選資料。

舉例來說,假設您將 PartitionType 列舉設為 DAY。如要查詢 Patients 資料表,找出在特定日期更新的病患資源,請執行以下查詢:

SELECT * FROM `PROJECT_ID.BIGQUERY_DATASET.Patients`
  WHERE DATE(lastUpdated) = 'YYYY-MM-DD'

增量匯出

您可以指定時間戳記,只匯出自上次成功匯出後新增至 FHIR 儲存庫的 FHIR 資源。這麼做可提升效能,避免重新匯出整個 FHIR 儲存庫的成本,同時確保匯出的資料一律為最新版本。

呼叫 fhirStores.export 時,請在 _since 欄位中指定時間戳記。

在 BigQuery 中查詢及分析 FHIR 資料

將 FHIR 資源匯出至 BigQuery 後,請參閱「在 BigQuery 中分析 FHIR 資料」解決方案,瞭解如何查詢及分析匯出的資料。這項解決方案使用 Synthea™ 在 FHIR 中產生的合成資料公開資料集,其中包含超過 100 萬筆以 Synthea™ 和 FHIR 格式產生的合成病患記錄。

排解 FHIR 匯出要求問題

如果在 FHIR 匯出要求期間發生錯誤,系統會將錯誤記錄到 Cloud Logging。詳情請參閱「查看 Cloud Logging 中的錯誤記錄檔」。

如果整個作業傳回錯誤,請參閱長期執行作業的疑難排解

無法將資料欄從 NULLABLE 轉換為 REPEATED

這個錯誤是因為重複的擴充功能。如要解決這項錯誤,請使用 ANALYTICS_V2 結構定義類型。如果您使用 ANALYTICS_V2,兩個擴充功能之間可能會發生衝突,或是擴充功能與其他欄位之間發生衝突。

資料欄名稱會從擴充資料網址中最後一個 / 字元後方的文字產生。如果擴充資料網址結尾為 /resource_field name 這類值,就可能發生衝突。\

為避免再次發生這種錯誤,如果擴充資料欄位名稱與要填入的資源欄位相同,請勿使用擴充資料。

後續步驟