Пример таблицы:
╔═══════════════╗
║ dummy_data ║
╠═══════════════╣
║ XXX_1234_YYYY ║
║ XXX_5678_YYYY ║
║ XXX_9101_YYYY ║
╚═══════════════╝
Желаемый вывод:
╔═══════════════╦═════════════╦═════════════╗
║ dummy_data ║ with_prefix ║ with_suffix ║
╠═══════════════╬═════════════╬═════════════╣
║ XXX_1234_YYYY ║ Pre_1234 ║ 1234_Suf ║
║ XXX_5678_YYYY ║ Pre_5678 ║ 5678_Suf ║
║ XXX_9101_YYYY ║ Pre_9101 ║ 9101_Suf ║
╚═══════════════╩═════════════╩═════════════╝
В настоящее время я пытаюсь написать Presto Query
для использования на Amazon Athena
,
select
dummy_data,
'Pre_' || split(dummy_data,'_')[2] as with_prefix,
split(dummy_data,'_')[2] || '_Suf' as with_suffix
from dummy_table
Приведенный выше запрос приводит к тому, что split(dummy_data,'_')[2]
вычисляется два раза.Есть ли способ избежать двойного вычисления?Также Presto выясняет, что это то же самое вычисление и избегает повторного вычисления?
Я пытаюсь избежать использования подзапроса или С предложением .