Вместо JOIN
, это более естественно выражается с помощью аналитических функций. В документации для analytic functions with standard SQL in BigQuery объясняется, как работают аналитические функции и что такое синтаксис. В качестве примера, если вы хотите принять последовательные различия в x
значений, где порядок определяется по столбцам y
, вы можете сделать:
WITH T AS (
SELECT
x,
y
FROM UNNEST([9, 3, 4, 7]) AS x WITH OFFSET y)
SELECT
x,
x - LAG(x) OVER (ORDER BY y) AS x_diff
FROM T;
Обратите внимание, что для запуска этого в BigQuery, вам необходимо отключить «Использовать Наследство SQL "в разделе« Показать параметры », чтобы включить стандартный SQL. Предложение WITH T
просто устанавливает некоторые данные для примера.
Для вашего конкретного случая, вы, вероятно, хотите, такой запрос:
SELECT
row,
issue.updated_at,
issue.updated_at - LAG(issue.updated_at) OVER (ORDER BY issue.updated_at) AS timedifference
FROM `icxmedia-servers.icx_metrics.gh_zh_data_production`
WHERE issue.number = 6
AND issue.name = "archer"
ORDER BY requestid ASC;
Если вы хотите, чтобы определить различия в updated_at
снаружи только один номер выпуска, вы можете использовать пункт PARTITION BY
, а также. Например:
SELECT
row,
issue.name,
issue.number,
issue.updated_at,
issue.updated_at - LAG(issue.updated_at) OVER (
PARTITION BY issue.number
ORDER BY issue.updated_at) AS timedifference
FROM `icxmedia-servers.icx_metrics.gh_zh_data_production`
ORDER BY requestid ASC;
Я пытался сделать что-то, равный вашему - issue.updated_at предложение приемлемо - LAG (issue.updated_at) OVER (ORDER BY issue.updated_at) AS timedifference - в моем запросе, но я получил ошибку - Отсутствует функции в аналитическом выражении. У вас есть право на это возможность? –
Пожалуйста, создайте отдельный вопрос с примером того, чего вы пытаетесь достичь. –
Я пытаюсь получить разницу между строками, но значения являются целыми числами, а не меткой времени. Функция LAG работает отлично. Но если я попытаюсь сделать вычитание, которое вы предложили, я получаю предупреждение - Отсутствует функция в аналитическом выражении. Это тот же вопрос с разными столбцами и значениями. –