SubqueryAlias - это унарный логический оператор , который дает псевдоним для (дочернего) подзапроса, для которого он был создан.Псевдоним можно использовать в другой части структурированного запроса для коррелированного подзапроса.
SubqueryAlias
(и псевдонимы в целом) доступны до тех пор, пока Spark Optimizer не завершит фазу оптимизации запросов (используя EliminateSubqueryAliases правило оптимизации).
Цитирование EliminateSubqueryAliases оптимизация:
Подзапросы требуются только для предоставления информации об области видимости для атрибутов и могут быть удалены после завершения анализа.
В вашем запросе подзапрос является частью до createOrReplaceTempView("t1")
.
spark.range(1, 100).createOrReplaceTempView("t1")
Вы можете переписать приведенный выше структурированный запрос в следующий, который ничего не изменит, но даст более сложныйобъяснение.
val q = spark.range(1, 100)
q.createOrReplaceTempView("t1")
Итак, q
может быть любым другим структурированным запросом и, следовательно, необходим псевдоним для ссылки на любой выходной атрибут из подзапроса.
Когда вы explain
запрос, который вы не увидите SubqueryAlias
узлов (и это не только потому, что план логического запроса запланирован наплан физического запроса, в котором используются физические операторы).