Menu dokumentacji

Makra SQL#

Wywołuj współdzielone makro tak jak każdą inną funkcję SQL. Supernova wstrzykuje definicję makra tylko wtedy, gdy zapytanie odwołuje się do jego nazwy, dzięki czemu niezwiązane zapytania pozostają bez zmian.

sql
select
  id,
  initcap(lower(property_company)) as company_name
from titan.hubspot.contacts
where not _deleted

Współdzielona biblioteka#

Współdzielone makra znajdują się w src/queries/macros/. Nazwa pliku jest nazwą wywoływaną. Bieżące makro initcap dzieli tekst na słowa, zmienia pierwszy znak każdego słowa na wielką literę, pozostałe na małe i łączy części.

Definicja używa zwykłej składni dialektu:

sql
create macro initcap(text) as
  list_reduce(
    list_transform(
      regexp_extract_all(text, '(\w+\W*)'),
      word -> upper(word[1]) || lower(word[2:])
    ),
    (left_value, right_value) -> left_value || right_value,
    ''
  );

Rozwiązywanie#

Makra są wykrywane przed wykonaniem zapytania. Odwołanie do initcap( wczytuje tę definicję dla sesji. Nazwy makr nie stają się tabelami jeziora, a ich definicje nie mogą uzyskać dostępu do innej organizacji.

Użyj funkcji z typami, gdy kod wywołujący wymaga kontraktów parametrów i wartości zwrotnej. Makro SQL nadal sprawdza się w istniejących pomocniczych funkcjach bez typów i zapewnia zgodność ze składnią DuckDB.