적용 대상:
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를 해결할 때 Azure Databricks는 먼저 기본 제공 함수나 임시 함수를 고려하고, 그 다음 현재 스키마의 함수를 고려합니다. -
암시적으로 연결된 매개 변수로 캐스팅할 수 있는 모든 식입니다.
함수는 리터럴 의무화, 상수 식또는 특정 값과 같은 인수에 추가 제한을 적용할 수 있습니다.
-
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 이상필요에 따라 테이블 인수의 각 파티션의 결과 행이 함수에 전달되는 순서를 지정합니다.
기본적으로 순서는 정의되지 않습니다.
-
하나 이상의 식입니다. 각 식은 테이블 인수, 리터럴, 매개 변수, 변수 및 결정적 함수에 있는 열로 구성될 수 있습니다.
-
-
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