다음을 통해 공유


함수 호출

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

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

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 절에서 특정 테이블 참조의 열 또는 필드를 이름으로 지정하는 약식입니다.

  • 테이블_인수

    체크 표시된 예 Databricks SQL 체크 표시된 예 Databricks Runtime 14.0 이상

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

    • TABLE ( table_name )

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

    • TABLE ( 쿼리 )

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

    • 테이블 분할

      확인 표시된 예 Databricks SQL 확인 표시된 예 Databricks Runtime 14.1 이상

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

      • WITH SINGLE PARTITION

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

      • partition_expr (파티션 표현식)

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

    • table-ordering

      확인 표시된 예 Databricks SQL 확인 표시된 예 Databricks Runtime 14.1 이상

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

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

      • order_by_expr

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

  • namedParameter

    체크 표시된 예 Databricks SQL 체크 표시된 예 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