Partilhar via


CRIAR TABELA [USANDO]

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

Define uma tabela gerenciada ou externa, opcionalmente usando uma fonte de dados.

Sintaxe

{ { [CREATE OR] REPLACE TABLE | CREATE [EXTERNAL] TABLE [ IF NOT EXISTS ] }
  table_name
  [ table_specification ]
  [ USING data_source ]
  [ table_clauses ]
  [ AS query ] }

table_specification
  ( { column_identifier column_type [ column_properties ] } [, ...]
    [ , table_constraint ] [...] )

column_properties
  { NOT NULL |
    GENERATED ALWAYS AS ( expr ) |
    GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( [ START WITH start ] [ INCREMENT BY step ] ) ] |
    DEFAULT default_expression |
    COMMENT column_comment |
    column_constraint |
    MASK clause } [ ... ]

table_clauses
  { OPTIONS clause |
    PARTITIONED BY clause |
    CLUSTER BY clause |
    clustered_by_clause |
    LOCATION path [ WITH ( CREDENTIAL credential_name ) ] |
    COMMENT table_comment |
    TBLPROPERTIES clause |
    WITH { ROW FILTER clause } } [...]

clustered_by_clause
  { CLUSTERED BY ( cluster_column [, ...] )
    [ SORTED BY ( { sort_column [ ASC | DESC ] } [, ...] ) ]
    INTO num_buckets BUCKETS }

Parâmetros

  • SUBSTITUIR

    Se especificado, substitui a tabela e seu conteúdo, se ela já existir. Esta cláusula só é suportada para tabelas Delta Lake.

    REPLACEpreserva o histórico da tabela.

    Nota

    O Azure Databricks recomenda vivamente utilizar REPLACE em vez de eliminar e recriar tabelas Delta Lake.

  • EXTERNA

    Se especificado, cria uma tabela externa. Ao criar uma tabela externa, você também deve fornecer uma LOCATION cláusula. Quando uma tabela externa é descartada, os arquivos no LOCATION não serão descartados.

  • SE NÃO EXISTIR

    Se especificado e já existir uma tabela com o mesmo nome, a instrução será ignorada.

    IF NOT EXISTS não pode coexistir com REPLACE, o que significa CREATE OR REPLACE TABLE IF NOT EXISTS que não é permitido.

  • table_name

    O nome da tabela a ser criada. O nome não deve incluir uma especificação temporal. Se o nome não estiver qualificado, a tabela será criada no esquema atual.

    As tabelas criadas em hive_metastore só podem conter caracteres ASCII alfanuméricos e sublinhados (INVALID_SCHEMA_OR_RELATION_NAME).

  • table_specification

    Esta cláusula opcional define a lista de colunas, seus tipos, propriedades, descrições e restrições de coluna.

    Se você não definir colunas, o esquema da tabela deverá especificar ou AS queryLOCATION.

    • column_identifier

      Um nome exclusivo para a coluna.

      Os identificadores de coluna de tabelas Delta Lake sem propriedade de mapeamento de coluna ('delta.columnMapping.mode' = 'name') não devem conter os caracteres ' ' (espaço), ',', ';', '{', '}', '(', ')'. 'n', 't' e '='.

      Os identificadores de coluna da AVRO tabela devem começar com '' ou uma letra Unicode (incluindo letras não-ASCII) e ser seguidos por uma combinação de '', letras Unicode e dígitos.

    • column_type

      Especifica o tipo de dados da coluna. Nem todos os tipos de dados suportados pelo Azure Databricks são suportados por todas as origens de dados.

    • NÃO NULO

      Se especificado, a coluna não aceitará NULL valores. Esta cláusula só é suportada para tabelas Delta Lake.

    • GERADO SEMPRE COMO ( expr )

      Quando você especifica essa cláusula, o valor desta coluna é determinado pelo especificado expr.

      expr pode ser composto por literais, identificadores de coluna dentro da tabela e determinísticos, funções ou operadores SQL internos, exceto:

      Também expr não deve conter nenhuma subconsulta.

    • GERADO { SEMPRE | POR PADRÃO } COMO IDENTIDADE [ ( [ START WITH start ] [ INCREMENT BY step ] ]

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

      Define uma coluna de identidade. Quando você grava na tabela e não fornece valores para a coluna de identidade, será atribuído automaticamente a ela um valor exclusivo e estatisticamente crescente (ou decrescente se step for negativo). Esta cláusula só é suportada para tabelas Delta Lake. Esta cláusula só pode ser usada para colunas com tipo de dados BIGINT.

      Os valores atribuídos automaticamente começam com start e aumentam em step. Os valores atribuídos são únicos, mas não é garantido que sejam contíguos. Ambos os parâmetros são opcionais e o valor padrão é 1. step não pode ser 0.

      Se os valores atribuídos automaticamente estiverem além do intervalo do tipo de coluna de identidade, a consulta falhará.

      Quando ALWAYS é usado, você não pode fornecer seus próprios valores para a coluna de identidade.

      As seguintes operações não são suportadas:

      • PARTITIONED BY uma coluna de identidade
      • UPDATE uma coluna de identidade

      Nota

      Declarar uma coluna de identidade em uma tabela Delta desabilita transações simultâneas. Use colunas de identidade apenas em casos de uso em que gravações simultâneas na tabela de destino não são necessárias.

    • PADRÃO default_expression

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

      Define um DEFAULT valor para a coluna que é usado em INSERT, UPDATEe MERGE ... INSERT quando a coluna não é especificada.

      Se nenhum padrão for especificado, DEFAULT NULL será aplicado para colunas anuláveis.

      default_expression pode ser composto de literais e funções ou operadores SQL internos, exceto:

      Também default_expression não deve conter nenhuma subconsulta.

      DEFAULT é suportado para CSV, JSON, PARQUETe ORC fontes.

    • COMENTAR column_comment

      Um literal de cadeia de caracteres para descrever a coluna.

    • column_constraint

      Adiciona uma restrição de chave primária ou chave estrangeira à coluna em uma tabela Delta Lake.

      Não há suporte para restrições para tabelas no hive_metastore catálogo.

      Para adicionar uma restrição de verificação a uma tabela Delta Lake, use ALTER TABLE.

    • Cláusula MASK

      Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior Marque Sim somente Unity Catalog

      Importante

      Esta funcionalidade está em Pré-visualização Pública.

      Adiciona uma função de máscara de coluna para anonimizar dados confidenciais. Todas as consultas futuras dessa coluna receberão o resultado da avaliação dessa função sobre a coluna no lugar do valor original da coluna. Isso pode ser útil para fins de controle de acesso refinado, em que a função pode inspecionar a identidade e/ou associações de grupo do usuário que invoca para decidir se deseja redigir o valor.

    • table_constraint

      Adiciona uma chave primária informativa ou restrições de chave estrangeira informativa à tabela Delta Lake.

      Não há suporte para restrições de chave para tabelas no hive_metastore catálogo.

      Para adicionar uma restrição de verificação a uma tabela Delta Lake, use ALTER TABLE.

  • USANDO data_source

    O formato de arquivo a ser usado para a tabela. data_source deve ser um dos seguintes:

    • AVRO
    • BINARYFILE
    • CSV
    • DELTA
    • JSON
    • ORC
    • PARQUET
    • TEXT

    Os seguintes formatos de arquivo adicionais a serem usados para a tabela são suportados no Databricks Runtime:

    • JDBC
    • LIBSVM
    • Um nome de classe totalmente qualificado de uma implementação personalizada do org.apache.spark.sql.sources.DataSourceRegister.

    Se USING for omitido, o padrão será DELTA.

    Para qualquer data_source outro que você também deve especificar umLOCATION, a menos que DELTA o catálogo de tabelas seja hive_metastore.

    O seguinte se aplica a: Databricks Runtime

    HIVE é suportado para criar uma tabela Hive SerDe no Databricks Runtime. Você pode especificar o Hive-specific file_format e row_format usando a cláusula, que é um mapa de cadeia de caracteres que não diferencia maiúsculas OPTIONS de minúsculas. São eles option_keys :

    • FILEFORMAT
    • INPUTFORMAT
    • OUTPUTFORMAT
    • SERDE
    • FIELDDELIM
    • ESCAPEDELIM
    • MAPKEYDELIM
    • LINEDELIM
  • table_clauses

    Opcionalmente, especifique local, particionamento, clustering, opções, comentários e propriedades definidas pelo usuário para a nova tabela. Cada subcláusula só pode ser especificada uma vez.

    • PARTICIONADO POR

      Uma cláusula opcional para particionar a tabela por um subconjunto de colunas.

      Nota

      Se você não definir uma tabela Delta, as colunas de particionamento serão colocadas no final da tabela, mesmo que sejam definidas anteriormente na especificação da coluna. Considere usar CLUSTER BY em vez de PARTITIONED BY tabelas Delta.

    • CLUSTER POR

      Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime 13.3 e posterior

      Uma cláusula opcional para agrupar uma tabela Delta por um subconjunto de colunas. Para agrupar outras tabelas, use clustered_by_clause.

      O agrupamento de líquidos Delta Lake não pode ser combinado com PARTITIONED BY.

    • clustered_by_clause

      Opcionalmente, agrupe a tabela ou cada partição em um número fixo de hash buckets usando um subconjunto das colunas.

      Não há suporte para clustering para tabelas Delta Lake.

      • AGRUPADOS POR

        Especifica o conjunto de colunas pelo qual agrupar cada partição ou a tabela se nenhum particionamento for especificado.

        • cluster_column

          Um identificador que faz referência a na column_identifier tabela. Se você especificar mais de uma coluna, não deve haver duplicatas. Como um clustering opera no nível de partição, você não deve nomear uma coluna de partição também como uma coluna de cluster.

      • ORDENADO POR

        Opcionalmente, mantém uma ordem de classificação para linhas em um bucket.

        • sort_column

          Uma coluna para classificar o bucket. A coluna não deve ser coluna de partição. As colunas de classificação devem ser exclusivas.

        • ASC ou DESC

          Opcionalmente, especifica se sort_column é classificado em ordem crescente (ASC) ou decrescente (DESC). Os valores padrão são ASC.

      • EM num_buckets BALDES

        Um literal INTEGER especificando o número de buckets em que cada partição (ou a tabela, se nenhum particionamento for especificado) é dividida.

    • CAMINHO DA LOCALIZAÇÃO [ COM ( CREDENCIAL credential_name ) ]

      Um caminho opcional para o diretório onde os dados da tabela são armazenados, que pode ser um caminho no armazenamento distribuído. path deve ser um literal STRING. Se você não especificar nenhum local, a tabela será considerada um managed table e o Azure Databricks criará um local de tabela padrão.

      A especificação de um local torna a tabela uma tabela externa.

      Para tabelas que não residem no hive_metastore catálogo, a tabela path deve ser protegida por um local externo, a menos que uma credencial de armazenamento válida seja especificada.

      Não é possível criar tabelas externas em locais que se sobrepõem ao local de tabelas gerenciadas.

      Para uma tabela Delta Lake, a configuração da tabela é herdada do LOCATION if data is present. Portanto, se alguma TBLPROPERTIES, table_specificationou PARTITIONED BY cláusulas forem especificadas para tabelas Delta Lake, elas deverão corresponder exatamente aos dados de localização Delta Lake.

    • OPÇÕES

      Define ou redefine uma ou mais opções de tabela definidas pelo usuário.

    • COMENTAR table_comment

      Um literal de cadeia de caracteres para descrever a tabela.

    • TBLPROPERTIES

      Opcionalmente, define uma ou mais propriedades definidas pelo usuário.

    • Cláusula COM FILTRO DE LINHA

      Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior Marque Sim somente Unity Catalog

      Importante

      Esta funcionalidade está em Pré-visualização Pública.

      Adiciona uma função de filtro de linha à tabela. Todas as consultas futuras dessa tabela receberão um subconjunto de suas linhas para as quais a função é avaliada como booleana TRUE. Isso pode ser útil para fins de controle de acesso refinado, em que a função pode inspecionar a identidade e/ou associações de grupo do usuário que invoca para decidir se deseja filtrar determinadas linhas.

  • Consulta AS

    Esta cláusula opcional preenche a tabela usando os dados de query. Quando você especifica um, query você não deve também especificar um table_specificationarquivo . O esquema da tabela é derivado da consulta.

    Observe que o Azure Databricks substitui a fonte de dados subjacente pelos dados da consulta de entrada, para garantir que a tabela criada contenha exatamente os mesmos dados que a consulta de entrada.

Exemplos

-- Creates a Delta table
> CREATE TABLE student (id INT, name STRING, age INT);

-- Use data from another table
> CREATE TABLE student_copy AS SELECT * FROM student;

-- Creates a CSV table from an external directory
> CREATE TABLE student USING CSV LOCATION '/mnt/csv_files';

-- Specify table comment and properties
> CREATE TABLE student (id INT, name STRING, age INT)
    COMMENT 'this is a comment'
    TBLPROPERTIES ('foo'='bar');

-- Specify table comment and properties with different clauses order
> CREATE TABLE student (id INT, name STRING, age INT)
    TBLPROPERTIES ('foo'='bar')
    COMMENT 'this is a comment';

-- Create partitioned table
> CREATE TABLE student (id INT, name STRING, age INT)
    PARTITIONED BY (age);

-- Create a table with a generated column
> CREATE TABLE rectangles(a INT, b INT,
                          area INT GENERATED ALWAYS AS (a * b));