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.
select
id,
initcap(lower(property_company)) as company_name
from titan.hubspot.contacts
where not _deletedWspół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:
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.