arguments 속성
arguments 속성 (함수용)
arguments 속성은 리소스가 받을 수 있는 파라미터를 정의해요. 각 인자는 name, data_type 필드와 선택적으로 description, default_value 속성을 가질 수 있어요. 함수의 경우 웨어하우스의 사용자 정의 함수(UDF) 파라미터를 정의하는 데 사용돼요.
출처: 문서
본문
💡 알고 계셨나요? dbt v1.11부터 또는 dbt "v1 Latest" 릴리스 트랙에서 사용할 수 있어요.
functions/<filename>.yml
functions:
- name: <function name>
arguments:
- name: <arg name>
data_type: <string> # warehouse-specific
description: <markdown_string>
default_value: <string | boolean | integer> # optional, available in Snowflake and Postgres
Definition
arguments 속성은 리소스가 받을 수 있는 파라미터를 정의할 때 사용해요. 각 인자는 name, data_type 필드와 선택적인 description, default_value 속성을 가질 수 있어요.
함수의 경우 함수 속성에 arguments를 추가해서 웨어하우스의 사용자 정의 함수(UDF) 파라미터를 정의할 수 있어요. 함수 인자의 data_type은 웨어하우스별로 다르고(예: STRING, VARCHAR, INTEGER), 데이터 플랫폼이 지원하는 데이터 타입과 일치해야 해요.
Properties
name
인자의 이름이에요. arguments를 지정했다면 필수 필드예요.
data_type
웨어하우스가 이 파라미터에 기대하는 데이터 타입이에요. arguments를 지정했다면 필수 필드이며, 데이터 플랫폼이 지원하는 데이터 타입과 일치해야 해요.
웨어하우스별 데이터 타입 — data_type 값은 웨어하우스별로 달라요. 웨어하우스가 요구하는 구문을 사용하세요:
- Snowflake:
STRING,NUMBER,BOOLEAN,TIMESTAMP_NTZ등 - BigQuery:
STRING,INT64,BOOL,TIMESTAMP,ARRAY<STRING>등 - Redshift:
VARCHAR,INTEGER,BOOLEAN,TIMESTAMP등 - Postgres:
TEXT,INTEGER,BOOLEAN,TIMESTAMP등
지원되는 데이터 타입의 전체 목록은 웨어하우스 문서를 참고해 주세요.
description
인자를 설명하는 선택적 마크다운 문자열이에요. 문서화하는 데 유용해요.
default_value
default_value 속성을 사용하면 함수 인자를 선택적으로 만들 수 있어요.
default_value없이 정의된 인자는 필수 인자가 되며, 함수를 사용할 때 반드시 값을 전달해야 해요. 필수 인자를 전달하지 않으면 함수 호출이 실패해요.default_value가 있는 인자는 선택적이에요 — 값을 전달하지 않으면 웨어하우스가default_value에 설정한 값을 사용해요.
이 속성은 Snowflake와 Postgres에서 지원돼요.
default_value를 사용할 때는 인자 순서가 중요해요. 필수 인자(기본값이 없는 인자)는 선택 인자보다 앞에 와야 해요. 올바른 순서의 예시예요:
functions/schema.yml
functions:
- name: sum_2_values
description: Add two values together
arguments:
- name: val1 # this argument comes first because it has no default value
data_type: integer
description: The first value
- name: val2
data_type: integer
description: The second value
default_value: 0
returns:
data_type: integer
이 예시에서:
val1은default_value가 없으므로 필수예요.val2는default_value가0이므로 선택이에요.val2에 값을 제공하지 않으면 함수는0을 사용해요.
sum_2_values 함수 호출 예시를 볼게요:
sum_2_values(5) # val1 = 5, val2 = 0 (default value used since user did not specify val2)
sum_2_values(5, 10) # val1 = 5, val2 = 10
sum_2_values() # ❌ error: val1 is required and must be passed
Examples
간단한 함수 인자
functions/schema.yml
functions:
- name: is_positive_int
arguments:
- name: a_string
data_type: string
description: "The string that I want to check if it's representing a positive integer (like '10')"
returns:
data_type: boolean
복잡한 데이터 타입
functions/schema.yml
functions:
- name: calculate_discount
arguments:
- name: original_price
data_type: DECIMAL(10,2)
description: "The original price before discount"
- name: discount_percent
data_type: INTEGER
description: "The discount percentage to apply"
returns:
data_type: DECIMAL(10,2)
description: "The discounted price"
배열 데이터 타입 (BigQuery 예시)
functions/schema.yml
functions:
- name: get_tags
arguments:
- name: tag_string
data_type: STRING
description: "Comma-separated string of tags"
returns:
data_type: ARRAY<STRING>
description: "An array of individual tag strings"