문서 메뉴

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 방언 구문을 사용합니다.

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 구문 호환성에 여전히 유용합니다.