BigQuery 데이터 세트 및 테이블 준비

인스턴스에 AML AI 데이터 세트를 만들려면 해당 Google Cloud 프로젝트 내에서 BigQuery에 데이터를 스테이징해야 합니다. 다음 섹션에서는 이러한 데이터 세트와 테이블을 준비하는 한 가지 방법을 보여줍니다.

BigQuery 출력 데이터 세트 만들기

다음 명령어를 실행하여 파이프라인 출력을 BigQuery로 보내는 데 사용할 데이터 세트를 만듭니다. 다음 명령어에서 문자(대문자 또는 소문자), 숫자, 밑줄만 포함하는 BQ_OUTPUT_DATASET_NAME 이름을 선택합니다. 하이픈을 사용할 수 없습니다.

bq mk \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  BQ_OUTPUT_DATASET_NAME

AML AI 출력을 보려면 AML 출력 데이터 모델을 참조하세요.

BigQuery 입력 데이터 세트 만들기

BigQuery 입력 데이터 세트를 만듭니다. 나중에 이 데이터 세트에 금융 기관의 트랜잭션 데이터를 입력합니다.

bq mk \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  BQ_INPUT_DATASET_NAME

BigQuery 입력 데이터 세트 테이블 만들기 및 트랜잭션 데이터 업로드

Google은 AML 입력 데이터 모델 스키마를 다음 형식으로 제공합니다.

각 테이블의 JSON 파일을 다운로드하고 이를 사용해서 스키마를 적용하여 연결된 BigQuery 테이블을 만들려면 다음 명령어를 실행합니다.

for table in party account_party_link transaction risk_case_event party_supplementary_data
do
  curl -O "https://cloud.google.com/financial-services/anti-money-laundering/docs/reference/schemas/${table}.json"
  bq mk --table --project_id PROJECT_ID BQ_INPUT_DATASET_NAME.$table $table.json
done

금융 기관의 트랜잭션 데이터를 데이터 세트 테이블에 업로드합니다. 자세한 내용은 BigQuery 빠른 시작을 참조하세요.

BigQuery 데이터 세트에 대한 액세스 권한 부여

API는 프로젝트에 서비스 계정을 자동으로 만듭니다. 서비스 계정이 BigQuery 입력 및 출력 데이터 세트에 액세스해야 합니다.

  1. 개발 머신에 jq를 설치합니다. 개발 머신에 jq를 설치할 수 없으면 Cloud Shell을 사용하거나, BigQuery 문서에 있는 리소스에 대한 액세스 권한을 부여하는 다른 방법 중 하나를 사용할 수 있습니다.
  2. 다음 명령어를 실행하여 입력 데이터 세트와 해당 테이블에 대한 읽기 액세스 권한을 부여합니다.

    # The BigQuery input dataset name. You created this dataset and
    # uploaded the financial data into it in a previous step. This dataset should be
    # stored in the Google Cloud project.
    
    export BQ_INPUT_DATASET_NAME="BQ_INPUT_DATASET_NAME"
    
    # The BigQuery tables in the input dataset. These tables should
    # be part of the same project as the intended instance.
    # Make sure to replace each table variable with the appropriate table name.
    export PARTY_TABLE="PARTY_TABLE"
    export ACCOUNT_PARTY_LINK_TABLE="ACCOUNT_PARTY_LINK_TABLE"
    export TRANSACTION_TABLE="TRANSACTION_TABLE"
    export RISK_CASE_EVENT_TABLE="RISK_CASE_EVENT_TABLE"
    # Optional table
    export PARTY_SUPPLEMENTARY_DATA_TABLE="PARTY_SUPPLEMENTARY_DATA_TABLE"
    
    # Grant the API read access to the BigQuery dataset.
    # Update the current access permissions on the BigQuery dataset and store in a temp file.
    # Note: This step requires jq as a dependency.
    # If jq is not available, the file /tmp/mydataset.json may be created manually.
    bq show --format=prettyjson "PROJECT_ID:BQ_INPUT_DATASET_NAME" | jq '.access+=[{"role":"READER","userByEmail":"service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" }]'> /tmp/mydataset.json
    # Update the BigQuery dataset access permissions using the temp file.
    bq update --source /tmp/mydataset.json "PROJECT_ID:BQ_INPUT_DATASET_NAME"
    
    # Grant the API read access to the BigQuery table if the table is provided.
    for TABLE in $PARTY_TABLE $TRANSACTION_TABLE $ACCOUNT_PARTY_LINK_TABLE $RISK_CASE_EVENT_TABLE $PARTY_SUPPLEMENTARY_DATA_TABLE ; do
      [ -n TABLE ] && bq add-iam-policy-binding \
        --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" --role="roles/bigquery.dataViewer" \
        PROJECT_ID:BQ_INPUT_DATASET_NAME.${TABLE}
    done
    
  3. 다음 명령어를 실행하여 출력 데이터 세트에 대한 쓰기 액세스 권한을 부여합니다.

    # Note: This step requires jq as a dependency.
    # If jq isn't available, the file /tmp/mydataset.json may be created manually.
    bq show --format=prettyjson PROJECT_ID:BQ_OUTPUT_DATASET_NAME | jq '.access+=[{"role":"roles/bigquery.dataEditor","userByEmail":"service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com" }]'> /tmp/perms.json
    
    bq update --source /tmp/perms.json PROJECT_ID:BQ_OUTPUT_DATASET_NAME