Вопрос

Я очень новичок в BigQuery от Google

Я хочу проанализировать отметку времени (yyyy/mm/dd:hh:mm:ss) в зависимости от дня и месяца хотите разделить дни на недели.Я не нашел ни одной функции BigQuery, которая делала бы это.

Следовательно, мне было интересно, есть ли способ, которым я могу написать UDF а затем получить к нему доступ с помощью запроса BigQuery

Это было полезно?

Решение

Здесь есть два вопроса, а значит, и два ответа:

  • Большой запрос делает поддержка UDFS: доктора.(Этого не произошло, когда я впервые ответил на этот вопрос.)

  • Даже без UDFS группировка дат по-прежнему выполнима.BigQuery имеет одноразовую функцию синтаксического анализа, PARSE_UTC_USEC, который ожидает ввода в форме YYYY-MM-DD hh:mm:ss.Вам нужно будет использовать REGEXP_REPLACE чтобы оформить ваше свидание в нужном формате.Как только вы это сделаете, UTC_USEC_TO_WEEK это распределит события по неделям, и вы можете сгруппировать их по этому признаку.Итак, связывая все это воедино, если в вашей таблице есть столбец с именем timestamp, вы могли бы получить количество по неделям с помощью чего-то вроде

    SELECT week, COUNT(week)
    FROM (SELECT UTC_USEC_TO_WEEK(
                   PARSE_UTC_USEC(
                     REGEXP_REPLACE(
                       timestamp, 
                       r"(\d{4})/(\d{2})/(\d{2}):(\d{2}):(\d{2}):(\d{2})", 
                       r"\1-\2-\3 \4:\5:\6")), 0) AS week
          FROM mytable) 
    GROUP BY week;
    

    Обратите внимание, что 0 вот аргумент в пользу того, какой день недели использовать в качестве "начала".;Я использовал воскресенье, но для "деловых" вещей использую 1 (т.е.Понедельник), вероятно, имело бы больше смысла.

На всякий случай, если вам это понадобится, раздел, посвященный функциям временных меток в документации это полезно.

Другие советы

Поддержка UDF в BigQuery теперь здесь! https://cloud.google.com/bigquery/user-defined-functions

Вот некоторый код, который преобразует строковый спецификатор времени в объект даты JavaScript и извлекает из него некоторые свойства;видеть https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date для получения информации о недвижимости, доступной на ближайшие даты.

ЗАПРОС (замените вложенный select вашей таблицей):

SELECT day_of_week, month_date
FROM parseDate(select '2015/08/01 12:00:00' as date_string);

код:

function parsedate(row, emit) {
  var d = new Date(row.date_string);
  emit({day_of_week: d.getDay(),
        month_date: d.getDate()});
}

bigquery.defineFunction(
  'parseDate',                           // Name of the function exported to SQL
  ['date_string'],                    // Names of input columns
  [{'name': 'day_of_week', 'type': 'integer'},
   {'name': 'month_date', 'type': 'integer'}],
  parsedate
);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top