BigQuery INSERT SELECT приводит к случайному порядку записей? - PullRequest
1 голос
/ 02 февраля 2020

Я использовал стандартный SQL для вставки данных из одной таблицы в другую в BigQuery с помощью Jupyter Notebook.

Например, у меня есть две таблицы:

table1

    ID  Product
0   1   book1
1   2   book2
2   3   book3

table2

    ID  Product Price
0   5   book5   8.0
1   6   book6   9.0
2   4   book4   3.0

Я использовал следующие коды

INSERT test_data.table1
SELECT *
FROM test_data.table2
ORDER BY Price;

SELECT *
FROM test_data.table1

Я получил

    ID  Product
0   1   book1
1   3   book3
2   2   book2
3   5   book5
4   6   book6
5   4   book4

Я ожидал, что это появляется в порядке ID 1 2 3 4 5 6, которые 4,5,6 упорядочены по цене

Также кажется, что данные INSERT и / или SELECT FROM отображают записи в произвольном порядке в другом прогоне.

Как управлять вывод SELECT FROM без включения столбца Price в выходную таблицу для их сортировки?

И это произошло, когда я импортирую файл csv для создания новой таблицы, порядок записи является случайным при использовании SELECT ИЗ, чтобы отобразить их.

1 Ответ

1 голос
/ 02 февраля 2020

Предложение ORDER BY указывает столбец или выражение в качестве критерия сортировки для набора результатов.
Если предложение ORDER BY отсутствует, порядок результатов запроса не определен .
Допустимы псевдонимы столбцов из предложения FROM или списка SELECT. Если запрос содержит псевдонимы в предложении SELECT, эти псевдонимы переопределяют имена в соответствующем предложении FROM.

Итак, вы, скорее всего, хотели что-то вроде ниже

SELECT *
FROM test_data.table1
ORDER BY Price DESC 
LIMIT 100

Обратите внимание на использование LIMIT - это важная часть - Если вы сортируете очень большое количество значений, используйте Предложение LIMIT, чтобы избежать превышения ресурса тип ошибки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...