2015-02-03 2 views
1

Я запустил запрос в Google BigQuery несколько часов назад, и запрос все еще запущен. Я нажал кнопку «отказаться», но, похоже, нет способа остановить запрос. Что я могу сделать? Могу ли я связаться с Google, так что они прекращают запрос?Google BigQuery: остановить выполнение запроса

Я работаю над проектом для компании, которая анализирует данные Google Analytics с помощью BigQuery, поэтому я не хочу запускать их с большим счетом или чем-то еще. (Возможно, StackOverflow - это не подходящее место, чтобы задать этот вопрос, но я попытался найти другое место, и я не смог. На странице поддержки BigQuery говорится, что здесь следует задавать вопросы с помощью google- bigquery tag, поэтому я это делаю).

Я написал запрос (который я не хочу вставлять или описывать здесь, поскольку кто-то может злоупотреблять им, чтобы блокировать BigQuery или что-то еще, я не знаю). Давайте просто скажем, что это включает внутренние соединения. После того, как я написал его, и перед его запуском консольное сообщение было чем-то вроде «Это проанализирует 674 Кбайт данных», который выглядел нормально, учитывая тот факт, что в таблице всего 10 000 строк. У меня есть одно и то же сообщение после нажатия на запрос «отказаться», что-то вроде «Вы можете отказаться от этого, но вам все равно будет выставлен счет за 674 КБ данных».

Я очень стараюсь удостовериться, что то, что я делаю, не вызывает проблем у кого-то, поэтому я действительно запускаю этот запрос в локальной базе данных PostgreSQL (с теми же данными - 10 000 строк), как в BigQuery, и запрос заканчивается через секунду или два.

Как я могу отменить этот запрос, и могу ли я (компания, с которой я работал) быть выставлен счет за более чем 674 КБ данных?

+0

Не беспокойтесь о стоимости: независимо от того, сколько времени это займет , вы будете платить за эти 674 КБ - или ничего, если запрос не удался. Если вы скопируете вставить идентификатор задания для запроса, команда поддержки также сможет отлаживать указанный запрос. Благодаря! –

ответ

1

В настоящее время нет способа остановить задание BigQuery после его запуска, ни через веб-интерфейс, ни через вызовы API.

Согласно this, эта функция может быть добавлена ​​в будущем.

Поскольку BigQuery будет очертывать запрос на несколько машин, даже большой запрос (уровень TeraByte) не окажет большого влияния на отдельную машину, не говоря уже о запросе 674 КБ. Однако, согласно this, this - сумма, которую вы будете платить.

Вот несколько советов, чтобы сэкономить деньги в BigQuery.

Первое, что нужно знать, это то, что в отличие от традиционных СУБД BigQuery основано на столбцах, и вам будет взиматься плата за количество данных в столбцах, а не в строках.

  • Это означает, что не включайте столбцы, которые вам не нужны в запросе. Это может показаться тривиальным, но иногда люди приходит из РСУБДА могут писать запросы, как это:

    SELECT 
        COUNT(*), user_id 
    FROM 
        [Dataset.Table] 
    

    Запроса абсолютно правильно, но вместо того, чтобы быть заряжен только размером user_id столбца, Google будет на самом деле законопроект всей таблицы для этот запрос. Поэтому рекомендуется четко указывать имена столбцов.

  • Разбить столы на меньшие куски. Вместо того, чтобы иметь одну таблицу, содержащую все данные, рекомендуется разделить таблицу по дате и использовать table wildcard functions, чтобы сшить таблицы вместе во время запроса. В этом случае вам не будут выставлены счета по строкам, которые вам не нужны.

1

BigQuery поддерживает отмену заданий запроса. Вы можете сделать это с помощью bq командной строки утилиты:

bq cancel <job_id> 

или от API с помощью метода jobs.cancel (документально here)

Смежные вопросы