Ниже совсем не проверено и основано только на [надеюсь] правильной перетасовке синтаксиса - так что это позволяет избежать проблемы «коррелированных подзапросов, ссылающихся на другие таблицы»
UPDATE LOGGING.table_logs a
SET a.pinged = ARRAY(
SELECT AS STRUCT
CURRENT_TIMESTAMP() AS DATE,
b.size_bytes,
TIMESTAMP_MILLIS(b.last_modified_time) AS last_modified_time,
b.row_count
)
FROM `<DATASETNAME>.__TABLES__` b
WHERE a.table_id = b.table_id
AND a.table_id = CONCAT("ga_sessions_intraday_",FORMAT_DATE("%Y%m%d", CURRENT_DATE()))
Пожалуйста, проверьте и дайте мне знать, работает ли он сейчас или все еще требуются некоторые корректировки
PS Очевидно, вышеизложенное предполагает, что остальные логики c верны
Обновление для : как сохранить то, что уже есть в a.ping, и обновить его тем, что есть в настоящее время плюс результат запроса?
Попробуйте ниже
UPDATE LOGGING.table_logs a
SET a.pinged = ARRAY_CONCAT(a.pinged, ARRAY(
SELECT AS STRUCT
CURRENT_TIMESTAMP() AS DATE,
b.size_bytes,
TIMESTAMP_MILLIS(b.last_modified_time) AS last_modified_time,
b.row_count
))
FROM `<DATASETNAME>.__TABLES__` b
WHERE a.table_id = b.table_id
AND a.table_id = CONCAT("ga_sessions_intraday_",FORMAT_DATE("%Y%m%d", CURRENT_DATE()))