Azure Storage 데이터용 외부 테이블 만들기
BigQuery Omni는 Azure Storage에 저장된 데이터를 관리하지 않습니다. Azure Storage 데이터에 액세스하려면 외부 테이블을 정의합니다.
데이터 세트 만들기
azure-eastus2
위치를 사용하여 데이터 세트를 만듭니다.
Console
Google Cloud 콘솔에서 BigQuery 페이지를 엽니다.
탐색 패널의 리소스 섹션에서 프로젝트를 선택합니다.
세부정보 패널에서 데이터 세트 만들기를 클릭합니다.
데이터 세트 만들기 페이지에서 다음 정보를 입력합니다.
- 데이터 세트 ID에 고유한 데이터 세트 이름을 입력합니다.
데이터 위치로
azure-eastus2
를 선택합니다.기본 테이블 만료에서 다음 옵션 중 하나를 선택합니다.
- 사용 안 함: (기본값)데이터 세트에 만든 테이블이 자동으로 삭제되지 않습니다. 수동으로 삭제해야 합니다.
- 테이블 생성 후 경과 일수: 이 값은 데이터 세트에서 새로 만든 테이블이 삭제되는 시기를 결정합니다. 테이블이 생성될 때 테이블 만료 시간을 설정하지 않은 경우 이 값이 적용됩니다. 테이블이 만료될 때 Azure의 데이터가 삭제되지 않습니다.
데이터 세트 만들기를 클릭합니다.
SQL
CREATE SCHEMA
DDL 문을 사용합니다.
Console에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE SCHEMA mydataset OPTIONS ( location = 'azure-eastus2');
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
새 데이터 세트를 만들려면 --location
플래그와 함께 bq mk
명령어를 실행합니다.
선택적 매개변수에는 --default_table_expiration
, --description
이 있습니다.
기본 프로젝트가 아닌 다른 프로젝트에서 데이터 세트를 만들려면 해당 프로젝트 ID를 PROJECT_ID:DATASET_NAME
형식으로 데이터 세트 이름에 추가합니다.
bq --location=LOCATION mk \ --dataset \ --default_table_expiration INTEGER1 \ --description DESCRIPTION \ PROJECT_ID:DATASET_NAME
다음을 바꿉니다.
LOCATION
: 데이터 세트의 위치입니다.azure-eastus2
로 바꿉니다. 데이터 세트를 만든 후에는 위치를 변경할 수 없습니다..bigqueryrc
파일을 사용하여 위치 기본값을 설정할 수 있습니다.INTEGER1
: 새로 생성된 테이블의 기본 수명(초)입니다. 최솟값은3600
(1시간)입니다. 만료 시간은 현재 시간과 정수 값을 더한 값으로 계산됩니다. 데이터 세트에서 생성된 모든 테이블은 테이블 생성 시간으로부터INTEGER1
초 후에 삭제됩니다. 테이블을 만들 때 테이블 만료 시간을 설정하지 않으면 이 값이 적용됩니다.DESCRIPTION
: 따옴표로 묶인 데이터 세트 설명입니다.PROJECT_ID
: 프로젝트 IDDATASET_NAME
: 만들려는 데이터 세트의 이름입니다.
외부 테이블 만들기
필수 권한
BigQuery에서 외부 테이블을 만들려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.
bigquery.tables.create
bigquery.tables.getData
bigquery.jobs.create
bigquery.connections.delegate
사전 정의된 IAM 역할 roles/bigquery.admin
에는 외부 테이블을 만드는 데 필요한 권한이 포함됩니다. 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
외부 테이블 만들기
외부 테이블을 만들려면 다음 단계를 따르세요.
Console
Google Cloud 콘솔에서 BigQuery 페이지를 엽니다.
탐색 패널의 리소스 섹션에서 프로젝트를 펼치고 데이터세트를 선택합니다.
작업 옵션을 펼치고 열기를 클릭합니다.
세부정보 패널에서 테이블 만들기
를 클릭합니다.테이블 만들기 페이지의 소스 섹션에서 다음을 수행합니다.
- 다음 항목으로 테이블 만들기에서 Azure Blob Storage를 선택합니다.
Azure Blob Storage 경로 선택에서
azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH
형식을 사용하여 Azure Blob Storage 경로를 입력합니다.다음을 바꿉니다.
AZURE_STORAGE_ACCOUNT_NAME
: Azure Storage 계정의 이름 계정 리전은 데이터 세트의 리전과 동일해야 합니다.CONTAINER_NAME
: Azure 컨테이너의 이름FILE_PATH
: Azure Storage 데이터를 가리키는 데이터 경로 예를 들어 단일 CSV 파일의 경우에는FILE_PATH
가myfile.csv
일 수 있습니다.
파일 형식에 Azure의 데이터 형식을 선택합니다. 지원되는 형식은 AVRO, PARQUET, ORC, CSV, NEWLINE_DELIMITED_JSON, Sheets입니다.
선택사항: Azure Blob Storage의 데이터에 Hive 파티션 나누기가 사용되는 경우 다음을 수행합니다.
- 소스 데이터 파티션 나누기 체크박스를 선택합니다.
- Azure Blob Storage 경로 선택 필드에 와일드 카드 형식을 사용하여 Azure Blob Storage 경로를 입력합니다. 예를 들면
azure://account_name.blob.core.windows.net/container/*.
입니다. - 소스 URI 프리픽스 선택 필드에 URI 프리픽스를 입력합니다. URI 프리픽스는 파티션 인코딩 앞에 표시되는 URI 부분입니다. 예를 들면
azure://account_name.blob.core.windows.net/container/
입니다. - 파티션 추론 모드를 선택합니다. 직접 제공을 선택한 경우 파티션 키의 스키마 정보를 입력합니다.
테이블 만들기 페이지의 대상 섹션에서 다음을 수행합니다.
- 데이터세트 이름에서 적절한 데이터세트를 선택합니다.
- 테이블 이름 필드에 생성 중인 테이블의 이름을 입력합니다.
- 테이블 유형이 외부 테이블로 설정되어 있는지 확인합니다.
- 연결 ID의 경우 드롭다운에서 적절한 연결 ID를 선택합니다.
테이블 만들기를 클릭합니다.
SQL
외부 테이블을 만들려면 CREATE EXTERNAL TABLE
문을 사용합니다.
Console에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE EXTERNAL TABLE DATASET_NAME.TABLE_NAME WITH CONNECTION `AZURE_LOCATION.CONNECTION_NAME` OPTIONS ( format = 'DATA_FORMAT', uris = ['abs://AZURE_STORAGE_ACCOUNT_NAME/CONTAINER_NAME/FILE_PATH']);
다음을 바꿉니다.
DATASET_NAME
: 사용자가 만든 데이터 세트의 이름TABLE_NAME
: 이 테이블에 지정할 이름AZURE_LOCATION
: Google Cloud의 Azure 위치(예:azure-eastus2
)CONNECTION_NAME
: 사용자가 만든 연결의 이름DATA_FORMAT
: 지원되는 BigQuery 제휴 형식(예:AVRO
또는CSV
)AZURE_STORAGE_ACCOUNT_NAME
: Azure Storage 계정의 이름CONTAINER_NAME
: Azure 컨테이너의 이름FILE_PATH
: Azure Storage 데이터를 가리키는 데이터 경로
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
예:
CREATE EXTERNAL TABLE absdataset.abstable WITH CONNECTION `azure-eastus2.abs-read-conn` OPTIONS ( format = 'CSV', uris = ['abs://account/container/path/file.csv']);
bq
테이블 정의 파일을 만듭니다.
bq mkdef \ --source_format=DATA_FORMAT \ --connection_id=AZURE_LOCATION.CONNECTION_NAME \ "azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH" > table_def
다음을 바꿉니다.
DATA_FORMAT
: 지원되는 BigQuery 제휴 형식(예:AVRO
,CSV
,PARQUET
)(대문자)AZURE_LOCATION
: Google Cloud의 Azure 위치(예:azure-eastus2
)CONNECTION_NAME
: 사용자가 만든 연결의 이름AZURE_STORAGE_ACCOUNT_NAME
: Azure Storage 계정의 이름CONTAINER_NAME
: Azure 컨테이너의 이름FILE_PATH
: Azure Storage 데이터를 가리키는 데이터 경로
그런 후 외부 테이블을 만듭니다.
bq mk --external_table_definition=table_def DATASET_NAME.TABLE_NAME
다음을 바꿉니다.
DATASET_NAME
: 생성한 데이터 세트의 이름TABLE_NAME
: 이 테이블에 지정할 이름
예를 들어 다음 명령어는 azure://account_name.blob.core.windows.net/container/path
경로에 저장되고 azure-eastus2
위치에 읽기 연결이 있는 Azure Storage 데이터를 쿼리할 수 있는 새 외부 테이블 my_dataset.my_table
을 만듭니다.
bq mkdef \ --source_format=AVRO \ --connection_id=azure-eastus2.read-conn \ "azure://account_name.blob.core.windows.net/container/path" > table_def bq mk \ --external_table_definition=table_def my_dataset.my_table
Hive 파티션 나누기
Azure Blob Storage의 데이터에 Hive 파티션 나누기가 사용되는 경우 다음과 같이 테이블 정의 파일을 만듭니다.
bq mkdef \ --source_format=DATA_FORMAT \ --connection_id=AZURE_LOCATION.CONNECTION_NAME \ --hive_partitioning_mode=HIVE_PARTITIONING_MODE \ --hive_partitioning_source_uri_prefix=HIVE_PARTITIONING_URI_PRFEFIX "azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH" > table_def
다음을 바꿉니다.
HIVE_PARTITIONING_MODE
: 파티션 스키마 감지 모드HIVEPARTITIONING
: 파티션 인코딩 앞에 표시되는 URI의 일부인 URI 프리픽스(예:azure://account_name.blob.core.windows.net/container/
)
테이블 쿼리
BigQuery Omni를 사용하면 BigQuery 테이블과 같은 외부 테이블을 쿼리할 수 있습니다. 대화형 쿼리의 최대 결과 크기는 2MB입니다. 쿼리 결과가 큰 경우 Azure Storage로 내보내는 것이 좋습니다. 쿼리 결과는 BigQuery 익명 테이블(prod spanner)에 저장됩니다.
BigQuery 테이블에서와 같이 외부 테이블에서 쿼리를 실행합니다.
SQL
Console에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
SELECT * FROM DATASET_NAME.TABLE_NAME;
다음을 바꿉니다.
-
DATASET_NAME
: 생성한 데이터 세트의 이름 -
TABLE_NAME
: 생성한 외부 테이블의 이름
-
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
자바
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 BigQuery 자바 API 참조 문서를 확인하세요.
INFORMATION_SCHEMA로 리소스 메타데이터 보기
JOBS_BY_*
, JOBS_TIMELINE_BY_*
, RESERVATION*
BigQuery INFORMATION_SCHEMA
보기를 쿼리할 때는 쿼리 처리 위치를 테이블 리전과 함께 배치된 us-east4(북 버지니아)로 지정해야 합니다. 위치를 지정하지 않으면 작업이 실패합니다. 다른 모든 시스템 테이블의 경우 쿼리 작업 위치 지정은 선택사항입니다.
BigQuery Omni에서 지원되는 시스템 테이블에 대한 자세한 내용은 제한사항을 참조하세요.
JOBS_*
및 RESERVATION*
시스템 테이블을 쿼리하려면 처리 위치를 다음과 같이 지정합니다.
Console
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
편집기 탭이 표시되지 않으면
새 쿼리 작성을 클릭합니다.더보기 > 쿼리 설정을 클릭합니다. 쿼리 설정 대화상자가 열립니다.
쿼리 설정 대화상자에서 추가 설정 > 데이터 위치에 us-east4(북버지니아)를 선택합니다.
나머지 필드를 선택하고 저장을 클릭합니다.
bq
--location
플래그를 사용해서 작업의 처리 위치를 us-east4
로 설정합니다.
예시
bq --use_legacy_sql=false --location=us-east4 \
"SELECT * FROM region-azure-eastus2.INFORMATION_SCHEMA.JOBS limit 10;"
API
프로그래매틱 방식으로 작업을 실행하는 경우 location
인수를 us-east4
로 설정해야 합니다.
다음 단계
- 쿼리 결과 저장에 대한 자세한 내용은 Azure Storage로 쿼리 결과 내보내기를 참조하세요.