Partilhar via


Referência da tabela

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Uma referência de tabela é uma tabela de resultados intermediária dentro do SQL. Ele pode ser derivado de outros operadores, como funções, junções ou uma subconsulta, referenciar diretamente uma tabela base ou ser construída como uma tabela embutida.

Sintaxe

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

Parâmetros

  • table_name

    Identifica uma tabela que pode conter uma especificação temporal . Consulte Trabalhar com o histórico da tabela Delta Lake para obter detalhes.

    Se a tabela não puder ser encontrada, o Azure Databricks gerará um erro TABLE_OR_VIEW_NOT_FOUND.

    Consulte a resolução de colunas, campos, parâmetros e variáveis em para mais informações sobre a resolução de nomes.

    Aplica-se a: ** marcado como sim Databricks Runtime 16.0 e posterior

    table_namepode incluir uma especificação de opções.

  • view_name

    Identifica uma vista ou uma expressão de tabela comum (CTE). Se o modo de exibição não puder ser encontrado, o Azure Databricks gerará um erro TABLE_OR_VIEW_NOT_FOUND .

    Consulte Resolução de coluna, campo, parâmetro e variável para mais informações sobre a resolução de nomes.

  • FLUXO

    Retorna uma tabela ou uma função valorizada em tabela como fonte de streaming. As tabelas não podem ser fornecidas com uma especificação temporal quando usadas com a palavra-chave STREAM. As fontes de streaming são mais comumente usadas nas definições de tabelas de streaming.

  • JOIN

    Combina duas ou mais relações usando um join.

  • PIVOT

    Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior.

    Usado para perspetiva de dados; Você pode obter os valores agregados com base no valor específico da coluna.

    Antes do Databricks Runtime 12.0, PIVOT é limitado a SELECT seguindo a cláusula FROM.

  • UNPIVOT

    Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior.

    Usado para perspetiva de dados; Você pode dividir vários grupos de colunas em linhas.

  • [LATERAL]table_valued_function_invocation

    Invoca uma função com valor de tabela. Para se referir a colunas expostas por um table_reference anterior na mesma cláusula FROM, deve-se especificar LATERAL.

  • VALUES

    Define uma tabela embutida.

  • [LATERAL] ( consulta )

    Calcula uma referência de tabela usando uma consulta. Uma consulta prefixada por LATERAL pode fazer referência a colunas expostas por um table_reference anterior na mesma cláusula FROM. Tal construção é chamada de consulta correlacionada ou dependente.

  • TABLESAMPLE

    Opcionalmente, reduza o tamanho do conjunto de resultados amostrando apenas uma fração das linhas.

  • table_alias

    Opcionalmente, especifica um rótulo para o table_reference. Se o table_alias incluir column_identifiers, o seu número deve corresponder ao número de colunas no table_reference.

Selecionar na tabela Delta

Além das opções padrão de SELECT, as tabelas Delta suportam as opções de viagem no tempo descritas nesta seção. Para obter detalhes, consulte Trabalhar com o histórico da tabela Delta Lake.

AS OF Sintaxe

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression pode ser qualquer um:
    • '2018-10-18T22:15:12.013Z', ou seja, uma cadeia de caracteres que pode ser convertida em um carimbo de data/hora
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', ou seja, uma cadeia de caracteres de data
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Qualquer outra expressão que seja ou possa ser convertida em um carimbo de data/hora
  • version é um valor longo que pode ser obtido a partir da saída de DESCRIBE HISTORY table_spec.

Nem timestamp_expressionversion podem ser subconsultas.

Exemplo

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

> SELECT * FROM events VERSION AS OF 123

@ Sintaxe

Use a @ sintaxe para especificar o carimbo de data/hora ou a versão. O carimbo de data/hora deve estar no yyyyMMddHHmmssSSS formato. Você pode especificar uma versão depois @ antecipando a v para a versão. Por exemplo, para consultar a versão 123 para a tabela events, especifique events@v123.

Exemplo

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Exemplos


-- Return a data set from a storage location using a credential.
> SELECT * FROM `csv`.`spreadsheets/data.csv` WITH(CREDENTIAL some_credential);

-- Select from a jdbc data source while controlling the fetch size.
> SELECT * FROM jdbcTable WITH(fetchSize = 0);

-- 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