Является ли dataframe.orderBy (rand) таким же, как dataframe.withColumn ("X", rand) .orderBy ("X") - PullRequest
0 голосов
/ 07 февраля 2019

Я понимаю, что rand() создает столбец со случайными значениями, а orderBy принимает столбец для сортировки по убыванию или по возрастанию.

Глядя на dataframe.orderBy(rand):

, я нахожу удивительным, что orderBy может взять столбец и отсортировать, даже если он не был создан на dataframe.

По сравнению с

dataframe.withColumn("X",rand).orderBy("X")

, где dataframe("X") уже определено.

, что приводит меня к двум вопросам.

  1. dataframe.orderBy(rand) совпадает с dataframe.withColumn("X",rand).orderBy("X") в контексте заказа?

  2. Необходимо ли создавать дополнительные столбцы для заказа перед использованием .orderBy?

1 Ответ

0 голосов
/ 07 февраля 2019

Да, оба варианта эквивалентны, и это удивительно.orderBy принимает выражение или имя столбца.Вот это первый вариант.Если вы знакомы с SQL,

dataframe.withColumn("X",rand).orderBy("X")

эквивалентно

SELECT * FROM (SELECT *, randr AS X FROM table) ORDER BY X

, а

dataframe.orderBy(rand)

эквивалентно

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