테이블 참조

적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks 런타임

테이블 참조는 SQL 내의 중간 결과 테이블입니다. 함수, 조인 또는 하위 쿼리와 같은 다른 연산자에서 파생되거나 기본 테이블을 직접 참조하거나 인라인 테이블로 생성할 수 있습니다.

구문

table_reference
  { table_name [ TABLESAMPLE clause ] [ table_alias ] |
    { STREAM table_name [ table_alias ] | STREAM ( table_name ) [ table_alias ] } |
    view_name [ table_alias ] |
    JOIN clause |
    PIVOT clause |
    UNPIVOT clause |
    [ STREAM ] table_valued_function [ table_alias ] |
    [ LATERAL ] table_valued_function [ table_alias ] |
    VALUES clause |
    [ LATERAL ] ( query ) [ TABLESAMPLE clause ] [ table_alias ] }

매개 변수

  • table_name

    임시 사양을 포함할 수 있는 테이블을 식별합니다. 자세한 내용은 Delta Lake 테이블 기록 작업을 참조하세요.

    테이블을 찾을 수 없는 경우 Azure Databricks는 TABLE_OR_VIEW_NOT_FOUND 오류를 발생시킵니다.

    이름 확인에 대한 자세한 내용은 열, 필드, 매개 변수 및 변수 확인을 참조하세요.

  • view_name

    보기 또는 CTE(공통 테이블 식)를 식별합니다. 뷰를 찾을 수 없으면 Azure Databricks에서 TABLE_OR_VIEW_NOT_FOUND 오류가 발생합니다.

    이름 확인에 대한 자세한 내용은 열, 필드, 매개 변수 및 변수 확인을 참조하세요.

  • 스트림

    테이블 또는 테이블 반환 함수를 스트리밍 원본으로 반환합니다. 키워드(keyword) 사용할 경우 임시 사양으로 STREAM 테이블을 제공할 수 없습니다. 스트리밍 원본은 스트리밍 테이블정의에서 가장 일반적으로 사용됩니다.

  • JOIN

    조인을 사용하여 둘 이상의 관계를 결합합니다.

  • PIVOT

    적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks Runtime 12.2 LTS 이상.

    데이터 큐브 뷰에 사용됩니다. 특정 열 값에 따라 집계된 값을 가져올 수 있습니다.

    Databricks Runtime 12.0 이전의 PIVOTFROM 절에 따라 SELECT로 제한됩니다.

  • UNPIVOT

    적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks Runtime 12.2 LTS 이상.

    데이터 큐브 뷰에 사용되며 여러 열 그룹을 행으로 분할할 수 있습니다.

  • [LATERAL]table_valued_function_invocation

    테이블 반환 함수를 호출합니다. 동일한 FROM 절에서 앞의 table_reference에 의해 노출되는 열을 참조하려면 LATERAL를 지정해야 합니다.

  • VALUES

    인라인 테이블을 정의합니다.

  • [LATERAL] ( query )

    쿼리를 사용하여 테이블 참조를 계산합니다. LATERAL 접두사가 지정된 쿼리는 동일한 FROM 절에서 앞의 table_reference에 의해 노출되는 열을 참조할 수 있습니다. 이러한 구성을 상관 또는 종속 쿼리라고 합니다.

  • Tablesample

    필요에 따라 행의 일부만 샘플링하여 결과 집합의 크기를 줄입니다.

  • table_alias

    필요에 따라 table_reference에 대한 레이블을 지정합니다. table_aliascolumn_identifier가 포함되는 경우 해당 번호가 table_reference의 열 수와 일치해야 합니다.

Delta 테이블에서 선택

Delta 테이블은 표준 SELECT 옵션 외에도 이 섹션에 설명된 시간 이동 옵션을 지원합니다. 자세한 내용은 Delta Lake 테이블 기록 작업을 참조하세요.

AS OF 구문

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression 는 다음 중 하나일 수 있습니다.
    • '2018-10-18T22:15:12.013Z', 즉, 타임스탬프로 캐스팅할 수 있는 문자열
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', 즉, 날짜 문자열
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • 타임스탬프이거나 타임스탬프로 캐스팅될 수 있는 기타 식
  • versionDESCRIBE HISTORY table_spec 출력에서 가져올 수 있는 긴 값입니다.

timestamp_expressionversion는 모두 하위 쿼리가 될 수 없습니다.

예시

> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'

> SELECT * FROM delta.`/mnt/delta/events` VERSION AS OF 123

@ 구문

@ 구문을 사용하여 타임스탬프 또는 버전을 지정합니다. 타임스탬프는 yyyyMMddHHmmssSSS 형식이어야 합니다. 버전 앞에 v를 추가하여 @ 뒤에 버전을 지정할 수 있습니다. 예를 들어 테이블 events에 대한 버전 123를 쿼리하려면 events@v123를 지정합니다.

예시

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

예제

-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  1   2   3   4

-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  3   4

-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  1   2   3

-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  1  { "a" : 2 }

-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  1  { }

-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  Error: EXCEPT_OVERLAPPING_COLUMNS