Поддержка Google BigQuery для Avro LogicalTypes - PullRequest
0 голосов
/ 09 мая 2018

Как утверждает Google, нет поддержки для преобразования из Avro logicalType в тип BigQuery (как описано здесь внизу ).

Однако я могу загрузить файл Avro со следующей схемой:

schema = {
    'name': 'test',
    'namespace': 'testing',
    'type': 'record',
    'fields': [
        {'name': 'test_timestamp', 'type': 'long', 'logicalType': 'timestamp-millis'},
    ],
}

на BigQuery со столбцом типа TIMESTAMP .

Ситуация отличается со следующей схемой:

schema = {
    'name': 'test',
    'namespace': 'testing',
    'type': 'record',
    'fields': [
        {'name': 'testdate', 'type': 'int', 'logicalType': 'date'},
    ],
} 

и таблица BigQuery со столбцом типа ДАТА . Я использовал bq load следующим образом (в обоих случаях):

bq --location=EU load --source_format=AVRO --project_id=test-project dataset.table "gs://bucket/test_file.avro"

и произошел сбой за исключением:

Field testdate has changed type from DATE to INTEGER

Есть ли вероятность, что BigQuery будет поддерживать logicalTypes, или есть какой-нибудь элегантный способ обойти эту ситуацию? (Я знаю обходной путь, когда используется временная таблица, а затем есть BQL select, который преобразует TIMESTAMPS в DATES, но это не очень красиво: P)

1 Ответ

0 голосов
/ 09 мая 2018

Нативное понимание Avro Logical Types теперь доступно для всех пользователей BigQuery. Пожалуйста, обратитесь к странице документации здесь для более подробной информации: https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#logical_types

...