Локальні імена (let)
Дайте ім'я проміжному значенню і використовуйте його кілька разів усередині одного виразу.
Навіщо це потрібно
Коли той самий підвираз з'являється двічі, формула стає довшою і працює повільніше. Порівняйте:
if(len(trim(lower([Name]))) > 0, trim(lower([Name])), "unknown")
За допомогою let ви обчислюєте очищене ім'я один раз, називаєте його s і посилаєтеся двічі:
let s = trim(lower([Name])) in
if(len(s) > 0, s, "unknown")
Той самий результат — коротше, зрозуміліше, а trim(lower(...)) виконується лише раз.
Синтаксис
let ІМ'Я = ЗНАЧЕННЯ in ТІЛО
letпочинає оголошення.- ІМ'Я — локальне ім'я, яке ви обираєте (літери, цифри, підкреслення).
- ЗНАЧЕННЯ — будь-який вираз: літерал, посилання на колонку, виклик функції.
inвідділяє оголошення від тіла.- ТІЛО — вираз, який може використовувати це ім'я.
Результат усієї конструкції let — це результат ТІЛА.
Кілька імен одразу
Розділяйте оголошення комами. Кожне наступне може посилатися на попереднє:
let
gross = [Price] * [Quantity],
tax = gross * 0.2,
total = gross + tax
in total
Читається зверху вниз як короткий рецепт: обчислити gross, потім tax через gross, потім total через обидва.
Перекриття назв колонок
Якщо ім'я збігається з назвою колонки, усередині тіла let «виграє» оголошення. Зовні колонка зберігає своє значення.
let sales = 0 in sales + [Cost]
Усередині тіла sales — це 0, а не колонка.
Робота з помилками
Оголошення передають значення помилок «як є», тож ви можете їх розпізнати й замінити в тілі:
let n = parse_int([Raw]) in
is_error(n) ? 0 : n
Або коротше за допомогою ??:
let n = parse_int([Raw]) in n ?? 0
Вкладені let
Один let можна писати всередині іншого:
let x = let y = [Sales] in y * 2 in x - [Cost]
Кожен let має свій in. Зазвичай кілька оголошень через кому читаються краще, ніж глибока вкладеність:
let
y = [Sales],
x = y * 2
in x - [Cost]
Правила й обмеження
- Імена оголошень — звичайні ідентифікатори, не
[Імена В Дужках]. - Не можна використовувати імена функцій (
trim,if,len, …) як оголошення. - Оголошення бачиме лише в тілі свого
let, більше ніде. letне є обов'язковим: усе, що пишеться зlet, можна написати й без нього — він просто робить деякі формули зрозумілішими.
Коли доречно використати let
Добре підходить, коли:
- Той самий підвираз трапляється два й більше разів.
- У формулі є кілька логічних «кроків», які варто підписати.
- Проміжне значення коштовне (парсинг, регулярний вираз, пошук) і ви хочете обчислити його один раз.
Зайвий для:
- Простих формул на кшталт
[Price] * [Quantity]. - Випадків, коли окремий крок трансформації буде зрозумілішим за довгий вираз.