Добавление пропущенных строк даты в таблицу BigQuery - PullRequest
0 голосов
/ 28 мая 2019

У меня есть таблица, где 1 из строк является целым числом, которое представляет время строк.Проблема в том, что таблица не заполнена, отсутствуют временные метки.

Я хотел бы заполнить пропущенные значения так, чтобы каждые 10 секунд появлялась строка.Я хочу, чтобы остальные столбцы были монахинями (позже я напишу эти монахини).

10 секунд - это в основном 10000.Если бы это был питон, диапазон был бы:

   range(
      min(table[column]), 
      max(table[column]), 
      10000
   )

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Если ваши значения строго разделены на 10 секунд, и отсутствуют только несколько кратных 10-секундных интервалов, вы можете воспользоваться этим подходом, чтобы заполнить свои дыры в данных:

WITH minsmax AS (
   SELECT
     MIN(time) AS minval,
     MAX(time) AS maxval
   FROM `dataset.table` 
)

SELECT
   IF (d.time <= i.time, d.time, i.time) as time,
   MAX(IF(d.time <= i.time, d.value, NULL)) as value
FROM (
  SELECT time FROM minsmax m, UNNEST(GENERATE_ARRAY(m.minval, m.maxval+100, 100)) AS time 
) AS i
LEFT JOIN `dataset.table` d ON 1=1
WHERE ABS(d.time - i.time) >= 100
GROUP BY 1
ORDER BY 1

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

0 голосов
/ 03 июня 2019

В итоге я использовал следующий запрос через Python API:

    """
    SELECT
      i.time,
      Sensor_Reading,
      Sensor_Name

    FROM (
      SELECT time FROM UNNEST(GENERATE_ARRAY({min_time}, {max_time}+{sampling_period}+1, {sampling_period})) AS time 
    ) AS i

    LEFT JOIN
      `{input_table}` AS input
    ON
      i.time =input.Time
    ORDER BY i.time

    """.format(sampling_period=sampling_period, min_time=min_time,
               max_time=max_time,
               input_table=input_table)

Благодаря обоим ответам

0 голосов
/ 28 мая 2019

Вы можете использовать массивы.Для чисел вы можете сделать:

select n
from unnest(generate_array(1, 1000, 1)) n;

Существуют аналогичные функции для generate_timestamp_array() и generate_date_array(), если вам действительно нужны эти типы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...