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에 설정한 값을 사용해요.

이 속성은 SnowflakePostgres에서 지원돼요. 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

이 예시에서:

  • val1default_value가 없으므로 필수예요.
  • val2default_value0이므로 선택이에요. 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"

더 알아보기 (Learn more)