다음을 통해 공유


테이블 참조

적용 대상: 예(예)로 표시된 확인 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 오류가 발생합니다.

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

  • 시내

    테이블 또는 테이블 반환 함수를 스트리밍 원본으로 반환합니다. 키워드와 함께 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