함수 호출
적용 대상: 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
함수을(를) 해결할 때, Azure Databricks는 우선 기본 제공 함수나 임시 함수를 고려하고, 그런 다음 현재 schema의 함수를 고려합니다. -
연결된 매개 변수로 암시적으로 캐스팅할 수 있는 식입니다.
함수는 리터럴 의무화, 상수 식또는 특정 values같은 인수에 추가 제한을 적용할 수 있습니다.
-
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 인수는 분할되지 않습니다.
-
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 결과 행이 함수에 전달되는 순서를 지정합니다.
기본적으로 순서는 정의되지 않습니다.
-
하나 이상의 식입니다. 각 식은 table 인수 내의 columns 항목, 리터럴, parameters, 변수 및 결정적 함수로 구성될 수 있습니다.
-
-
! [확인 표시 예](.. /.. /_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