Получение делает для удаления дополнительных файлов на ошибке

В рамках ограничений экспорта BigQuery упоминается, что CSV не поддерживает вложенные и повторяющиеся данные. Таким образом, попробуйте экспортировать в Avro или JSON:

from google.cloud import bigquery
client = bigquery.Client()
bucket_name = 'your_bucket'
project = 'bigquery-public-data'
dataset_id = 'samples'
table_id = 'shakespeare'

destination_uri = 'gs://{}/{}'.format(bucket_name, '')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)
configuration = bigquery.job.ExtractJobConfig()
#For AVRO
#configuration.destination_format ='AVRO'
#For JSON
#configuration.destination_format ='NEWLINE_DELIMITED_JSON'

extract_job = client.extract_table(
table_ref,
destination_uri,
job_config=configuration,
location='US')
extract_job.result()

Надеюсь, это поможет.

7
задан Dan Olson 12 March 2009 в 19:11
поделиться

1 ответ

Вообще говоря, GNU делают, не поддерживает цели с несколькими выводами. Однако существует исключение к тому правилу: правила шаблона. Если можно структурировать make-файл, таким образом, что он использует правила шаблона генерировать объектные файлы, Вы можете достигать своих целей. Например:

.DELETE_ON_ERROR:

all: foo.o

%.o %.d: %.c
    @touch $*.d
    @touch $*.o
    @exit 1

Вы будете видеть, что с этим make-файлом, когда "ошибка" обнаруживается в правиле, и.d и.o файл удалены. Преимущество для этого подхода состоит в том, что он более точно выражает граф зависимостей путем описания, как.d файл должен быть сгенерирован и какое правило произведет его.

С другой стороны, общая парадигма в этом случае - как Вы предположили: имейте GCC, генерируют.d файл во временное имя файла и только перемещают его в место после того, как команда GCC завершилась успешно. Обычно это выполняется с приемом оболочки:

all: foo.o

%.o: %.c
    gcc -o $@ -MMD -MF $(basename $@).d.tmp -c $< \
        && mv $(basename $@).d.tmp $(basename $@).d

Здесь "волшебный" прием является использованием флагов GCC -MMD, который генерирует файл зависимости как побочный эффект компиляции, и -MF, который позволяет Вам указать выходное название файла зависимости; и использование оболочки cmd1 && cmd2 синтаксис, который заставляет оболочку только выполняться cmd2 если cmd1 выходы успешно.

6
ответ дан 7 December 2019 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: