Табличные функции и FLATTEN в BigQuery

Можно ли использовать функции FLATTEN и TABLE_QUERY вместе?

Похоже, что TABLE_QUERY возвращает только имя таблицы, а FLATTEN также требует набора данных.

Предложение FROM:

FROM FLATTEN(TABLE_QUERY(nbr_pcrf, 'table_id CONTAINS "dump_"'), quotas) d

Ошибка:

Ошибка сбоя запроса: имя таблицы не может быть разрешено: имя набора данных отсутствует. Идентификатор задания: nbr-data-storage:job_44jU_diWnh4tk27UxDxFP-I5Rbg


person user3365840    schedule 02.04.2014    source источник


Ответы (1)


Это на самом деле немного вводит в заблуждение: происходит то, что FLATTEN() для всего, что не является просто именем таблицы, нуждается в дополнительном наборе круглых скобок, чтобы отличить поле, по которому вы сглаживаете, от таблицы. Другими словами, если вы делаете

SELECT ... FROM FLATTEN(TABLE_QUERY(...), foo)

поле foo интерпретируется как имя объединенной таблицы (как в SELECT * from bar,foo).

Обходной путь для этой проблемы прост: добавьте еще один набор скобок. То есть:

SELECT ... FROM 
FLATTEN((TABLE_QUERY(nbr_pcrf, 'table_id CONTAINS "dump_"')), quotas)
person Jordan Tigani    schedule 03.04.2014
comment
Нет проблем, я пытался использовать CONCAT(), но, к сожалению, это не было принято, поэтому я объединим таблицы в одну. Является ли инструмент отслеживания ошибок общедоступным? Не могли бы вы предоставить мне URL? Спасибо - person user3365840; 03.04.2014
comment
База данных ошибок, которую использует команда BigQuery, не является общедоступной, но есть открытый трекер ошибок, который вы можете использовать для сообщения о проблемах и проверки их статуса. code.google.com/p/google-bigquery/issues/list - person Jordan Tigani; 03.04.2014
comment
это уже решено? У меня была такая же проблема здесь, и мне было интересно, как ее решить - person Willian Fuks; 09.04.2015