Вот мой мистерий. На консоли, когда я вычислить этот запрос, он работает отлично:mystery on BigQuery views
SELECT rd.ds_id AS ds_id
FROM (SELECT ds_id, 1 AS dummy FROM bq_000010.table) rd
INNER JOIN EACH (SELECT 1 AS dummy) cal ON (cal.dummy = rd.dummy);
Затем я сохранить его как вид называется dataset.myview и выполнить команду:
SELECT * FROM dataset.myview LIMIT 1000
Но возникает следующее сообщение об ошибке :
SELECT query which references non constant fields or uses aggregation functions or has one or more of WHERE, OMIT IF, GROUP BY, ORDER BY clauses must have FROM clause.
тем не менее, когда я пытаюсь: SELECT * FROM dataset.myview
, то есть без LIMIT
, это работает !!
И в самом деле, когда я запускаю мой полный запрос с LIMIT на дне, оно также вызывает ошибку:
SELECT rd.ds_id AS ds_id
FROM (SELECT ds_id, 1 AS dummy FROM bq_000010.table) rd
INNER JOIN EACH (SELECT 1 AS dummy) cal ON (cal.dummy = rd.dummy) LIMIT 1000;
Тем не менее, когда я добавляю внутренний ORDER BY, он вычисляет выздоровел:
SELECT rd.ds_id AS ds_id
FROM (SELECT ds_id,
1 AS dummy
FROM bq_000010.000010_flux_visites_ds
ORDER BY ds_id) rd
INNER JOIN EACH (SELECT 1 AS dummy) cal ON (cal.dummy = rd.dummy) LIMIT 1000
Что произойдет, если вы примените заказ по своему выбору на вид? или вам нужны случайные результаты? [Запрос с предложением LIMIT может все еще быть недетерминированным, если в запросе нет оператора, который гарантирует упорядочение выходного результирующего набора. Это связано с тем, что BigQuery выполняется с использованием большого числа параллельных рабочих. Порядок, в котором возврат параллельных заданий не гарантируется.] (Https://cloud.google.com/bigquery/query-reference?hl=ru#limit). Примечание: это не представление, а выбор для представления. – xQbert
Я обновил свой пост, но я не понимаю, что происходит. – sweeeeeet
Я сам не уверен. Обычно странно видеть лимит без какого-либо заказа; поэтому я спросил о заказе. *** полный SWAG *** заключается в том, что, возможно, параллельные работники завершают внешнее соединение и лимит перед тем, как внутренний выбор завершится, вызывая внутреннюю ошибку; и, применяя заказ системой, принудительно материализует запись перед выполнением внутреннего соединения соединения. Но у меня действительно есть ~~ NO CLUE ~~ – xQbert