Пример параметров SQL-набора данных

Данный документ содержит примеры написания SQL с использованием параметров для наборов данных в реальном времени.

Примечание: Для разных СУБД синтаксис может отличаться — приводятся только примеры.

  1. where 1=1 — всегда истинное условие, используемое для избежания синтаксических ошибок, если после него нет других параметров.

  2. Если параметр, обёрнутый в конструкцию and, пустой (по значению), будут выбраны все записи.

  3. В параметрах по месяцам/кварталам тип данных — текст, значения: месяцы 1–12, кварталы 1–4. Значения вида 01 работать не будут.

Тип Пример SQL Рекомендуемый тип параметра
Год SELECT * FROM Internet Access Data WHERE YEAR(Sales Date)='${Year}' Текст
Год-месяц SELECT * FROM Internet Access Data WHERE YEAR(Sales Date)='${Year}' and month(Sales Date)='${Month}' Текст
Дата SELECT * FROM Internet Access Data WHERE CAST(Statistical Date as varchar) in ('${Date}') Дата
Диапазон дат SELECT * FROM Internet Access Data WHERE Statistical Date between '${Start Date}' and '${End Date}' Дата
Интервал год-месяц SELECT * FROM Internet Access Data WHERE format(Statistical Date,'yyyyMM') >=concat('${Start Year}',case when '${Start Month}'>9 then '${Start Month}'else concat(0,'${Start Month}') end ) and format(Statistical Date,'yyyyMM') <=concat('${End Year}',case when '${End Month}'>9 then '${End Month}'else concat(0,’${End Month}') end ) Текст
Год-квартал SELECT * FROM Internet Access Data WHERE CAST(YEAR(Registration Date) as varchar) = '${Year}' and CAST(FLOOR((MONTH(Registration Date)+2)/3) as varchar) = '${Quarter}' Текст
Пример Рекомендуемый тип параметра
Одно значение SELECT * FROM Internet Access Data WHERE Contract Type='${Text Parameter}'
Множественное значение SELECT * FROM Internet Access Data WHERE Contract Type in ('${Text Parameter}')
Все значения, если параметр пуст SELECT * FROM new_dian WHERE 1=1 ${if(len(Region2) == 0,"","and Region in ('" + Region2 + "')")} или SELECT * FROM new_dian WHERE 1=1 and Region in ('${Region}')

Для других БД (Oracle, Presto, PostgreSQL, Apache Impala, ClickHouse) примеры аналогичны предыдущему.

Замечание для всех СУБД:

Параметры подставляются в SQL в фигурных или обычных скобках, переменные вида ${имя_параметра} Для фильтров с диапазоном дат используйте параметры Start Date и End Date Для фильтров типа “топ” (top N) параметр должен быть числового типа Для корректной работы самих параметров учтите, что типы параметров и полей должны совпадать (например, не использовать text вместо даты для сравнения по дате).