При использовании lag(value,offset)
я, похоже, не могу повторно использовать вывод в других функциях.BigQuery - Невозможно повторно использовать записи с задержкой
Выход следующего кода показывает, что существует previous_timestamp_utc
, но ни одна из функций, отличных от date()
или datediff()
, возвращает значения.
SELECT
id,
timestamp_utc,
DATE(timestamp_utc) AS date_timestamp_utc,
previous_timestamp_utc,
DATE(previous_timestamp_utc) AS date_previous_timestamp_utc,
DATEDIFF(timestamp_utc,previous_timestamp_utc),
FROM (
SELECT
id,
timestamp_utc,
LAG(timestamp_utc,1) OVER (PARTITION BY id ORDER BY timestamp_utc) AS previous_timestamp_utc,
FROM (
SELECT
SEC_TO_TIMESTAMP (timestamp) AS timestamp_utc,
id,
num_characters,
FROM
[publicdata:samples.wikipedia]))
ORDER BY
4 DESC
LIMIT
1000
Может кто-нибудь объяснить, почему это происходит?
Обход: Я неясно, почему это работает, но пятнистый обходной путь, чтобы предварительно бросить lag()
поле в date()
: замена
с
LAG(date(timestamp_utc),1) OVER (PARTITION BY id ORDER BY timestamp_utc)
вызывает использование previous_timestamp_utc
в date()
и datediff()
. Это не то, что мы должны ожидать от использования функции lag()
.
Привет, Майкл, это где-то в публичном издательстве? Я все еще вижу эту проблему. Мы много используем эту функциональность, поэтому было бы здорово узнать, когда мы можем прекратить использовать эту работу –