다음을 통해 공유


함수 호출

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

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

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

위치 매개 변수 호출

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

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

함수가 선택적 parameters을 지원하는 경우, 인수가 지정되지 않은 후행 parameters은 기본값으로 설정됩니다.

명명된 매개 변수 호출

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

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

혼합 호출을 비롯한 명명된 매개 변수 호출은 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 [, ...] } }

Parameters

  • function_name

    기본 제공 또는 사용자 정의 함수의 이름입니다. 정규화되지 않은 function_name 함수을(를) 해결할 때, Azure Databricks는 우선 기본 제공 함수나 임시 함수를 고려하고, 그런 다음 현재 schema의 함수를 고려합니다.

  • argExpr

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

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

  • star_clause

    FROM 절에서 참조할 수 있는 모든 columns을 지정하는 약식 또는 FROM 절의 특정 table 참조의 columns이나 필드를 지정하는 약식입니다.

  • table_argument

    ! [확인 표시 예](.. /.. /_static/images/icons/check.png Databricks SQL! [확인 표시 예](.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 이상)

    table매개 변수에 대한 인수를 지정합니다.

    • TABLE ( table_name )

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

    • TABLE ( 쿼리 )

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

    • table-파티셔닝

      ! [확인 표시 예](.. /.. /_static/images/icons/check.png Databricks SQL! [확인 표시 예](.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 이상)

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

      • WITH SINGLE PARTITION

        table 인수는 분할되지 않습니다.

      • partition_expr

        table 인수에 대해 partition하는 방법을 정의하는 하나 이상의 식입니다. 각 식은 columns의 존재가 포함된 table 인수, 리터럴, parameters, 변수 및 결정론적 함수로 구성될 수 있습니다.

    • table-ordering

      ! [확인 표시 예](.. /.. /_static/images/icons/check.png Databricks SQL! [확인 표시 예](.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 이상)

      필요에 따라 table 인수의 각 partition 결과 행이 함수에 전달되는 순서를 지정합니다.

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

      • order_by_expr

        하나 이상의 식입니다. 각 식은 table 인수 내의 columns 항목, 리터럴, parameters, 변수 및 결정적 함수로 구성될 수 있습니다.

  • namedParameter

    ! [확인 표시 예](.. /.. /_static/images/icons/check.png Databricks SQL! [확인 표시 예](.. /.. /_static/images/icons/check.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