#apache-spark-sql
#apache-spark-sql
Вопрос:
В Spark Sql, если у нас есть when(A amp; B) и если A оценивается как false, то будет ли B по-прежнему оцениваться?
Ответ №1:
Ответ отрицательный, если A равно false, то B не будет оцениваться. Чтобы проверить это, вы можете выполнить следующие запросы:
SELECT true and assert_true(false) is null
SELECT false and assert_true(false) is null
Запрос №1 завершится ошибкой, запрос №2 — нет.
Ответ №2:
Я предполагаю, что так и будет, как показано в следующем примере, где выполняется попытка оценить несуществующий столбец, но я не уверен на 100%:
spark-sql> select false amp; none;
Error in query: cannot resolve '`none`' given input columns: []; line 1 pos 15;
'Project [unresolvedalias((false amp; 'none), None)]
- OneRowRelation
Комментарии:
1. Та же проблема и со мной, оценивается несуществующий столбец. и это единственная причина, по которой я должен был задать этот вопрос, чтобы получить подтверждение. Спасибо за ваш ответ.
2. Наличие столбца оценивается на этапе планирования запроса, а конечное значение столбца — на этапе выполнения
3. Хорошая точка @falcon-le0, но я не уверен, как определить, оценивается ли значение столбца или нет…