함수 호출
적용 대상: Databricks SQL 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
화되지 않은 Azure Databricks를 확인하는 경우 먼저 기본 제공 또는 임시 함수를 고려한 다음 현재 스키마의 함수를 고려합니다. -
연결된 매개 변수로 암시적으로 캐스팅할 수 있는 식입니다.
함수는 리터럴 의무화, 상수 식 또는 특정 값과 같은 인수에 추가 제한을 적용할 수 있습니다.
-
절의 모든 참조 가능한 열 또는 절의
FROM
특정 테이블 참조 열 또는 필드FROM
이름을 지정하는 약식입니다. table_argument
! [확인 표시 예] (.. /.. /_static/images/icons/check.png Databricks SQL! [확인 표시 예] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 이상)
테이블인 매개 변수의 인수를 지정합니다.
TABLE
( table_name )이름으로 함수에 전달할 테이블을 식별합니다.
TABLE
( 쿼리 )결과를
query
함수에 전달합니다.테이블 분할
! [확인 표시 예] (.. /.. /_static/images/icons/check.png Databricks SQL! [확인 표시 예] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 이상)
필요에 따라 테이블 인수가 분할되도록 지정합니다. 지정하지 않으면 분할은 Azure Databricks에 의해 결정됩니다.
WITH SINGLE PARTITION
테이블 인수가 분할되지 않았습니다.
-
테이블 인수를 분할하는 방법을 정의하는 하나 이상의 식입니다. 각 식은 테이블 인수, 리터럴, 매개 변수, 변수 및 결정적 함수에 있는 열로 구성될 수 있습니다.
table-ordering
! [확인 표시 예] (.. /.. /_static/images/icons/check.png Databricks SQL! [확인 표시 예] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 이상)
필요에 따라 테이블 인수의 각 파티션의 결과 행이 함수에 전달되는 순서를 지정합니다.
기본적으로 순서는 정의되지 않습니다.
-
하나 이상의 식입니다. 각 식은 테이블 인수, 리터럴, 매개 변수, 변수 및 결정적 함수에 있는 열로 구성될 수 있습니다.
-
-
! [확인 표시 예] (.. /.. /_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