2017-03-12 1 views

답변

1

BigQuery에서 테이블을 만드는 한 가지 방법은 API 호출을 사용하는 것입니다. CREATE 테이블 구문이 없습니다. 테이블

BigQuery를 만들기

새 테이블 as detailed here을 만들 수있는 다양한 방법을 제공합니다

    는 명령 줄 도구의 BQ의 MK 명령을 사용하거나 경우 BigQuery API 테이블을 사용하여 빈 테이블을 만들 수 있습니다
  • .insert() 메소드.
  • CSV 또는 JSON 데이터 파일 (압축 또는 비 압축), Avro 파일 또는 Cloud Datastore 백업에서 테이블을로드 할 수 있습니다.
  • 쿼리 결과에서 테이블을 만들 수 있습니다.
  • 당신은 당신은 클라우드 스토리지에있는 파일을 통해 테이블을 정의 할 수있는 테이블
  • 를 복사 할 수 있습니다
  • 당신이 당신의 테이블 스키마를 정의 할 때 표준 SQL 유형을 사용할 수 있습니다
  • (Elliotts 답 참조) 업데이트하는 대한 tichet이있다 문서에서도 마찬가지입니다. 투표/별 here. Python samples are on GitHub

많은 간단 :

def create_table(dataset_name, table_name, project=None): 
    """Creates a simple table in the given dataset. 
    If no project is specified, then the currently active project is used. 
    """ 
    bigquery_client = bigquery.Client(project=project) 
    dataset = bigquery_client.dataset(dataset_name) 

    if not dataset.exists(): 
     print('Dataset {} does not exist.'.format(dataset_name)) 
     return 

    table = dataset.table(table_name) 

    # Set the table schema 
    table.schema = (
     bigquery.SchemaField('Name', 'STRING'), 
     bigquery.SchemaField('Age', 'INTEGER'), 
     bigquery.SchemaField('Weight', 'FLOAT'), 
    ) 

    table.create() 

    print('Created table {} in dataset {}.'.format(table_name, dataset_name)) 
+0

더 많은 포인터를 가져 주셔서 감사하지만이 예제는'STRUCT' 또는'ARRAY' 유형의 사용을 다루지 않습니다. [bigquery.SchemaField' 구현] (https://github.com/GoogleCloudPlatform/google-cloud-python/blob/44b4d50e59f5d5ace419dcfbe2b04c2e07cadc57/bigquery/google/cloud/bigquery/schema.py#L24-L26)을 확인했습니다.), 문서는 분명히 레거시 SQL에 관한 것입니다. – errordeveloper

+1

당신은 조금 혼란스러워합니다. 따라서 SQL은 테이블 정의가 아닌 쿼리에만 사용됩니다. 테이블을 생성 할 때 거기에 나열된 유형을 사용해야합니다. 레거시 또는 표준 SQL이 아니며 필드 유형의 API 정의입니다. 테이블을 정의 할 때 JSON에 나열된 유형을 사용할 수 있으며 표준 SQL 쿼리를 작성할 때 STRORD 또는 REPEATED 정의 된 필드 유형을 Struct 또는 Array로 간단하게 사용할 수 있습니다. – Pentium10

+0

좋습니다, 감사합니다! 이것은 의미가 있지만, 더 구체적으로 문서화되어야한다고 생각합니다. 새로운 사용자로서 이미 두 가지 언어 버전을 알고 있어야합니다. – errordeveloper

2

당신은 표준 SQL 유형을 사용하는 스키마 테이블을 만들 수 있습니다. 당신이 파일 같은 sample_schema.json에 넣고 경우

{ 
    "a": "ARRAY<STRUCT<x INT64, y STRING>>", 
    "b": "STRUCT<z DATE>", 
    "c": "INT64" 
} 

, 당신은 그것을 bq mk을 사용하는 테이블을 만들 수 있습니다 : 여기에 유효한 스키마의 예입니다 bq 클라이언트의

bq mk --schema sample_schema.json -t your_dataset.YourTableName 

외부는, tables.insert API는 표준 SQL 유형 이름도 지원합니다.

+0

문서화되지 않은 기능입니까? 라이브러리에 구현 된 JSON 유효성 검사를 통과하지 못합니다. – Pentium10

+0

나는 'INT64'를 인용하려고했다. 그게 네가 말하는거야? 그 외에도 값은 문자열입니다. –

+0

예,하지만이 문서는 어딘가에 있습니까? – Pentium10

관련 문제