SQL マクロ#
共有マクロは通常の SQL 関数と同じように呼び出します。Supernova はクエリがその名前を参照した場合にだけマクロ定義を挿入するため、無関係なクエリは変わりません。
sql
select
id,
initcap(lower(property_company)) as company_name
from titan.hubspot.contacts
where not _deleted共有ライブラリ#
共有マクロは src/queries/macros/ にあります。ファイル名が呼び出し名になります。現在の initcap マクロはテキストを単語に分割し、各単語の先頭を大文字、残りを小文字にして結合します。
定義には通常の方言の構文を使います。
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,
''
);解決#
マクロはクエリの実行前に検出します。initcap( を参照すると、その定義をセッションに読み込みます。マクロ名がレイクのテーブルになることはなく、定義から別の組織にアクセスすることもできません。
引数と戻り値の契約が必要な場合は型付き関数を使います。SQL マクロは、既存の型なしヘルパーや DuckDB 構文との互換性を保つ用途に適しています。