함수 호출

적용 대상:check marked yes Databricks SQL check marked yes Databricks 런타임

함수 호출은 인수를 함수 의 매개 변수에 연결한 후 기본 제공 함수 또는 사용자 정의 함수를 실행합니다.

Azure Databricks는 위치 매개 변수 호출명명된 매개 변수 호출을 지원합니다.

위치 매개 변수 호출

각 인수는 지정된 위치에서 일치하는 매개 변수에 할당됩니다.

명명된 매개 변수 호출이 필요하다는 것을 명시적으로 문서화하지 않는 한 모든 함수에서 이 표기법을 사용할 수 있습니다.

함수가 선택적 매개 변수를 지원하는 경우 인수가 지정되지 않은 후행 매개 변수는 기본값이 됩니다.

명명된 매개 변수 호출

인수는 함수에서 게시한 매개 변수 이름을 사용하여 매개 변수에 명시적으로 할당됩니다.

이 표기법은 수많은 선택적 매개 변수를 허용하는 기본 제공 함수선택 하위 집합에 사용해야 하므로 위치 매개 변수 호출이 비실용적입니다. 이러한 함수는 선행 매개 변수 집합이 위치 및 이름별 후행 선택적 매개 변수 집합에 의해 할당되어야 하는 혼합 호출을 허용할 수 있습니다.

혼합 호출을 비롯한 명명된 매개 변수 호출은 SQL UDF 및 Python UDF에도 사용할 수 있습니다.

구문

function_name ( [ argExpr | table_argument | star_clause ] [, ...]
                [ namedParameter => [ argExpr | table_argument ] [, ...] )

table_argument
  { TABLE ( { table_name | query } )
    [ table_partition ]
    [ table_order ]

table_partitioning
  { WITH SINGLE PARTITION |
    { PARTITION | DISTRIBUTE } BY { partition_expr | ( partition_expr [, ...] ) } }

table_ordering
  { { ORDER | SORT } BY { order_by_expr | ( order_by_expr [, ...] } }

매개 변수

  • function_name

    기본 제공 또는 사용자 정의 함수의 이름입니다. 정규 function_name 화되지 않은 Azure Databricks를 확인하는 경우 먼저 기본 제공 또는 임시 함수를 고려한 다음 현재 스키마의 함수를 고려합니다.

  • argExpr

    연결된 매개 변수로 암시적으로 캐스팅할 수 있는 식입니다.

    함수는 리터럴 의무화, 상수 식 또는 특정 값과 같은 인수에 추가 제한을 적용할 수 있습니다.

  • star_clause

    절의 모든 참조 가능한 열 또는 절의 FROM 특정 테이블 참조 열 또는 필드 FROM 이름을 지정하는 약식입니다.

  • table_argument

    ! [검사 yes로 표시됨](.. /.. /_static/images/icons/검사.png Databricks SQL ![ 검사 yes](.로 표시되었습니다. /.. /_static/images/icons/검사.png Databricks Runtime 14.0 이상)

    테이블인 매개 변수의 인수를 지정합니다.

    • TABLE ( table_name )

      이름으로 함수에 전달할 테이블을 식별합니다.

    • TABLE ( 쿼리 )

      결과를 query 함수에 전달합니다.

    • 테이블 분할

      ! [검사 yes로 표시됨](.. /.. /_static/images/icons/검사.png Databricks SQL ![ 검사 yes](.로 표시되었습니다. /.. /_static/images/icons/검사.png Databricks Runtime 14.1 이상)

      필요에 따라 테이블 인수가 분할되도록 지정합니다. 지정하지 않으면 분할은 Azure Databricks에 의해 결정됩니다.

      • WITH SINGLE PARTITION

        테이블 인수가 분할되지 않았습니다.

      • partition_expr

        테이블 인수를 분할하는 방법을 정의하는 하나 이상의 식입니다. 각 식은 테이블 인수, 리터럴, 매개 변수, 변수 및 결정적 함수에 있는 열로 구성될 수 있습니다.

    • table-ordering

      ! [검사 yes로 표시됨](.. /.. /_static/images/icons/검사.png Databricks SQL ![ 검사 yes](.로 표시되었습니다. /.. /_static/images/icons/검사.png Databricks Runtime 14.1 이상)

      필요에 따라 테이블 인수의 각 파티션의 결과 행이 함수에 전달되는 순서를 지정합니다.

      기본적으로 순서는 정의되지 않습니다.

      • order_by_expr

        하나 이상의 식입니다. 각 식은 테이블 인수, 리터럴, 매개 변수, 변수 및 결정적 함수에 있는 열로 구성될 수 있습니다.

  • namedParameter

    ! [검사 yes로 표시됨](.. /.. /_static/images/icons/검사.png Databricks SQL ![ 검사 yes](.로 표시되었습니다. /.. /_static/images/icons/검사.png Databricks Runtime 14.0 이상)

    할당된 매개 변수 argExpr 의 정규화되지 않은 이름입니다.

    명명된 매개 변수 표기법은 SQL UDF, Python UDF 및 특정 기본 제공 함수에 대해 지원됩니다.

예제

-- The substr function has three parameter and expects arguents to be passed by position.
> SELECT substr('hello', 3, 2);
  ll

-- The last parameter, the length, of substr is optional, when it is ommited it retrns the remainder of the string.
> SELECT substr('hello', 3);
  llo

-- Use the star clause to turn a set of columns into an array.
> SELECT array(*) FROM VALUES (1, 2, 3) AS t(a, b, c);
  [1, 2, 3]

-- The second parameter, start position, is not optional
> SELECT substr('hello');
  Error: WRONG_NUM_ARGS

-- read_files() is a function that accepts numerous parameters, many of which depend on the data source
-- The first parameter is positional, after that use named parameter invocation
> SELECT * FROM read_files(
    's3://bucket/path',
    format => 'csv',
    schema => 'id int, ts timestamp, event string');

-- cloud_files_state() is a function that expects a table name as an argument
> SELECT path FROM cloud_files_state(TABLE(mytable));
  /some/input/path
  /other/input/path

-- Invoking a SQL UDF using named parameter invocation
> CREATE TEMPORARY FUNCTION increase(base INT, factor FLOAT DEFAULT 1) RETURNS INT RETURN base * factor;

-- Out of order assignment
> SELECT increase(factor => 1.2, base => 100);
 120

-- Mixed invocation
> SELECT increase(100, factor => 1.3);
 130

-- Using default
> SELECT increase(base => 100);
 100

-- No position invocation after named invocation is allowed
> SELECT increase(base => 100, 1.4);
 Error: UNEXPECTED_POSITIONAL_ARGUMENT