Синтаксис формул
Типы данных
| Тип | Формат | Примеры |
|---|---|---|
| Числовой | Целые и дробные числа | 10, 3.14, -5 |
| Строковый | В одинарных кавычках | 'Привет', 'Данные' |
| Дата | 'ГГГГ-ММ-ДД' |
'2023-11-23' |
| Дата-Время | 'ГГГГ-ММ-ДД ЧЧ:ММ:СС' |
'2023-11-23 14:30:00' |
| Логический | TRUE или FALSE |
TRUE, false |
| NULL | NULL |
NULL |
Идентификаторы
- Ссылки на поля:
[Имя поля](напр.[Продажи],[Имя клиента]) - Могут ссылаться на вычисляемые меры из других мер/измерений
Операторы
Арифметические
+, -, *, /
Сравнения
=, !=, <>, >, <, >=, <=, LIKE, NOT LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN
Подстановочные знаки для LIKE:
- % - ноль или более символов
- _ - ровно один символ
Примеры:
[Статус] LIKE 'Актив%'
[ID] IN (1, 2, 3)
[Цена] BETWEEN (10, 100)
Проверка NULL
IS NULL, IS NOT NULL
Логические
AND, OR, NOT
Конкатенация строк
& (напр. 'Привет' & 'Мир' → 'ПриветМир')
Экранирование
\ (напр. 'О\'Рейли')
Функции
Агрегатные
| Функция | Описание | Пример |
|---|---|---|
SUM([поле]) |
Сумма значений | SUM([Доход]) |
AVG([поле]) |
Среднее значение | AVG([Температура]) |
COUNT([поле]) |
Количество не-NULL значений | COUNT([Заказы]) |
MIN([поле]) |
Минимальное значение | MIN([Цена]) |
MAX([поле]) |
Максимальное значение | MAX([Оценка]) |
COUNTDISTINCT([поле]) |
Количество уникальных значений | COUNTDISTINCT([ID_клиента]) |
Строковые
| Функция | Описание | Пример |
|---|---|---|
LEFT([поле], длина) |
Левые символы | LEFT([Имя], 3) |
RIGHT([поле], длина) |
Правые символы | RIGHT([Код], 2) |
LENGTH([поле]) |
Длина строки | LENGTH([Описание]) |
Дата/Время
| Функция | Описание | Пример |
|---|---|---|
YEAR([поле]) |
Год | YEAR([ДатаЗаказа]) |
MONTH([поле]) |
Месяц (1-12) | MONTH([ДатаРождения]) |
DAY([поле]) |
День (1-31) | DAY([Срок]) |
HOUR([поле]) |
Час (0-23) | HOUR([МеткаВремени]) |
MINUTE([поле]) |
Минуты (0-59) | MINUTE([ВремяЖурнала]) |
SECOND([поле]) |
Секунды (0-59) | SECOND([ВремяСобытия]) |
DATE(год, месяц, день) |
Создать дату | DATE(2023, 12, 25) |
DATETIME(...) |
Создать дату-время | DATETIME(2023, 12, 25, 14, 30, 0) |
Условные
| Функция | Описание | Пример |
|---|---|---|
IF(условие, да, нет) |
Условная логика | IF([Кол-во] > 10, 'Опт', 'Розница') |
Работа с NULL
| Функция | Описание | Пример |
|---|---|---|
ISNULL([поле]) |
Проверка на NULL | ISNULL([Отчество]) |
NULLIF([поле], значение) |
Возвращает NULL если равно | NULLIF([Статус], 'Ожидание') |
Анализ наборов (Фильтрация)
В фигурных скобках {}:
Базовый синтаксис:
{[Регион] = 'Север'}
{[Статус] IN ('Активен', 'Ожидание')}
{[Возраст] BETWEEN (18, 65)}
Поиск с подстановочными знаками:
{[Продукт] LIKE 'Про%'}
Комбинация с полями/агрегацией:
({[Регион] = 'Север'} [Продажи])
SUM({[Год] = 2023} [Доход])
Сложные условия:
{[Отдел] = 'Продажи' AND ([Статус] = 'Активен' OR [ДатаНайма] > '2020-01-01')}
Выражения
- Используйте круглые скобки
()для группировки - Функции можно вкладывать
- Примеры:
sql SUM([Продажи]) / COUNTDISTINCT([ID_клиента]) IF([Оценка] > 90, 'A', IF([Оценка] > 80, 'B', 'C')) LEFT([Имя], 1) & '. ' & [Фамилия]
Примечания
- Имена полей чувствительны к регистру
- Строковые сравнения чувствительны к регистру по умолчанию
- Литералы даты/времени должны использовать точный указанный формат
- NULL значения должны сравниваться через
IS NULL/IS NOT NULL - Экранируйте специальные символы в строках через обратный слеш (
\)