Комментарии 2
Впрочем, более новых сущностей типа колоночного формата паркет это все равно касается по полной программе — если вытащить из паркета только одну нужную колонку, можно сэкономить 99% ресурсов.
Интересный комментарий из ТГ:
От Select * есть технологический антидот - SQLFluff, rule_L044
Про CTE хотелось бы узнать, какие парсеры-компиляторы умные, какие нет; и почему нельзя рассчитывать на умные.
Привет, спасибо.
Да, SQLFluff отдельная история.
В особенности с dbt (шаблонизированным кодом). Ее можно встраивать как проверку на этапе DEV – тогда каждый разработчик/аналитик сам отвечает.
Либо на этапе TEST/CI – как проверка кода, тогда в этом контуре нужно будет скомпилировать код и проверить.
По поводу парсеров – я имел в виду сами аналитические движки. Часть из них может составить полный план запроса и оптимизировать (переписать).
Например, 3 CTE читающие разные таблицы select *, финальный запрос с применением фильтра WHERE на даты + категории.
Часть движков сможет эти фильтры переместить сразу в изначальные CTE, чтобы не читать все строки. Другие движки будут полностью собирать 3 CTE-таблицы в промежуточную область, и только потом фильтровать, что будет значительно дольше.
Вредные советы при построении Аналитики (Data Lake / DWH / BI) – чего стоит избегать