Todos os produtos
Search
Central de documentação

:Create a table

Última atualização: Jul 04, 2026

As tabelas são a unidade fundamental de armazenamento de dados no MaxCompute. Este tutorial orienta você no design e na criação de dois tipos de tabelas (não particionadas e particionadas) com dados bancários de exemplo e na posterior verificação dos resultados.

O que você aprenderá:

  • Como analisar um arquivo de dados e determinar a estrutura adequada da tabela

  • Como criar tabelas não particionadas e particionadas usando o cliente MaxCompute

  • Como adicionar partições a uma tabela particionada

  • Como verificar se as tabelas foram criadas com o schema correto

Steps overview: Etapa 1: Projetar as tabelas → Etapa 2: Criar as tabelas → Etapa 3: Verificar as tabelas

Pré-requisitos

Antes de começar, certifique-se de ter:

Observações de uso

Os tipos de dados das colunas na tabela devem corresponder aos tipos de dados nos arquivos source. Incompatibilidades de tipo impedem a importação dos dados.

Etapa 1: Projetar as tabelas

Antes de escrever qualquer SQL, examine seus dados source para determinar o número de colunas, os nomes dos campos e os tipos de dados de cada coluna.

Os arquivos de exemplo neste tutorial contêm dados de mutuários. Os campos são separados por vírgulas. A pré-visualização a seguir mostra algumas linhas de cada arquivo:

-- Non-partitioned table data (21 columns)
44,blue-collar,married,basic.4y,unknown,yes,no,cellular,aug,thu,210,1,999,0,nonexistent,1.4,93.444,-36.1,4.963,5228.1,0
53,technician,married,unknown,no,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,no,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1

-- Partitioned table data (20 columns per file; credit column is used as partition key)
53,technician,married,unknown,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1
39,services,married,high.school,no,no,cellular,apr,fri,185,2,999,0,nonexistent,-1.8,93.075,-47.1,1.405,5099.1,0

Conte as colunas, identifique o tipo de dados de cada campo e escolha nomes significativos para as colunas. A tabela a seguir resume a análise dos arquivos de exemplo.

<table> <thead> <tr> <td><p><b>Item</b></p></td> <td><p><b>Descrição</b></p></td> </tr> </thead> <colgroup></colgroup> <colgroup></colgroup> <tbody> <tr> <td><p>Número de colunas</p></td> <td><p>Conte o número de colunas em cada arquivo de exemplo e determine a quantidade de colunas na tabela a ser criada:</p> <ul> <li><p>O arquivo de exemplo usado para criar uma tabela não particionada contém 21 colunas. Com base nesse arquivo, crie uma tabela não particionada com 21 colunas. </p> <div> <div> <i></i> </div> <div> <strong>Nota </strong> <p>Se o número de colunas na tabela exceder o número de colunas no arquivo de exemplo, as colunas adicionais serão preenchidas com NULL. Caso a tabela tenha menos colunas que o arquivo de exemplo, os dados excedentes no arquivo serão descartados. </p> </div> </div></li> <li><p>Cada arquivo de exemplo usado para criar uma tabela particionada contém 20 colunas. Com base nesses arquivos, crie uma tabela particionada com 21 colunas, sendo uma delas a chave de partição. Defina as partições durante a criação da tabela. </p></li> </ul></td> </tr> <tr> <td><p>Campos da tabela</p></td> <td><p>Identifique os campos em cada arquivo de exemplo e determine os campos da tabela a ser criada:</p> <ul> <li><p>Campos da tabela não particionada:</p> <ul> <li><p>age: idade</p></li> <li><p>job: tipo de trabalho</p></li> <li><p>marital: estado civil</p></li> <li><p>education: nível de escolaridade</p></li> <li><p>credit: possui cartão de crédito</p></li> <li><p>housing: mutuários</p></li> <li><p>loan: possui empréstimos</p></li> <li><p>contact: informações de contato</p></li> <li><p>month: mês</p></li> <li><p>day_of_week: dia da semana</p></li> <li><p>duration: duração</p></li> <li><p>campaign: número de contatos na campanha atual</p></li> <li><p>pdays: tempo decorrido desde o último contato</p></li> <li><p>previous: número de contatos anteriores</p></li> <li><p>poutcome: resultados de atividades de marketing anteriores</p></li> <li><p>emp_var_rate: taxa de variação de emprego</p></li> <li><p>cons_price_idx: índice de preços ao consumidor</p></li> <li><p>cons_conf_idx: índice de confiança do consumidor</p></li> <li><p>euribor 3m: Taxa Interbancária de Oferta em Euros (Euribor) de 3 meses</p></li> <li><p>nr_employed: número de funcionários</p></li> <li><p>fixed_deposit: possui depósito a prazo</p></li> </ul></li> <li><p>Campos da tabela particionada:</p> <ul> <li><p>age: idade</p></li> <li><p>job: tipo de trabalho</p></li> <li><p>marital: estado civil</p></li> <li><p>education: nível de escolaridade</p></li> <li><p>housing: mutuários</p></li> <li><p>loan: possui empréstimos</p></li> <li><p>contact: informações de contato</p></li> <li><p>month: mês</p></li> <li><p>day_of_week: dia da semana</p></li> <li><p>duration: duração</p></li> <li><p>campaign: número de contatos na campanha atual</p></li> <li><p>pdays: tempo decorrido desde o último contato</p></li> <li><p>previous: número de contatos anteriores</p></li> <li><p>poutcome: resultados de atividades de marketing anteriores</p></li> <li><p>emp_var_rate: taxa de variação de emprego</p></li> <li><p>cons_price_idx: índice de preços ao consumidor</p></li> <li><p>cons_conf_idx: índice de confiança do consumidor</p></li> <li><p>euribor 3m: Euribor de 3 meses</p></li> <li><p>nr_employed: número de funcionários</p></li> <li><p>fixed_deposit: possui depósito a prazo</p></li> <li><p>credit: possui cartão de crédito (chave de partição) </p></li> </ul></li> </ul></td> </tr> <tr> <td><p>Tipos de dados</p></td> <td><p>Identifique o tipo de dados de cada coluna nos arquivos de exemplo:</p> <ul> <li><p>age: BIGINT</p></li> <li><p>job: STRING</p></li> <li><p>marital: STRING</p></li> <li><p>education: STRING</p></li> <li><p>credit: STRING</p></li> <li><p>housing: STRING</p></li> <li><p>loan: STRING</p></li> <li><p>contact: STRING</p></li> <li><p>month: STRING</p></li> <li><p>day_of_week: STRING</p></li> <li><p>duration: STRING</p></li> <li><p>campaign: BIGINT</p></li> <li><p>pdays: DOUBLE</p></li> <li><p>previous: DOUBLE</p></li> <li><p>poutcome: STRING</p></li> <li><p>emp_var_rate: DOUBLE</p></li> <li><p>cons_price_idx: DOUBLE</p></li> <li><p>cons_conf_idx: DOUBLE</p></li> <li><p>euribor3m: DOUBLE</p></li> <li><p>nr_employed: DOUBLE</p></li> <li><p>fixed_deposit: BIGINT</p></li> </ul></td> </tr> </tbody> </table>

Etapa 2: Criar as tabelas

Este tutorial cria quatro tabelas no total:

  • bank_data: tabela não particionada para importar o conjunto completo de dados

  • bank_data_pt: tabela particionada, com credit como chave de partição

  • result_table1: tabela não particionada para armazenar resultados de consultas

  • result_table2: tabela não particionada para armazenar resultados de consultas

Para obter detalhes sobre a sintaxe CREATE TABLE, consulte Criar uma tabela. Para mais informações sobre gerenciamento de tabelas e partições, consulte Operações de tabela e Operações de partição.

  1. Optional: Mude para o projeto MaxCompute desejado. Ignore esta etapa se o projeto já tiver sido selecionado ao iniciar o cliente.

    use doc_test_dev;

    O prompt é atualizado para confirmar a mudança:

    doc_test_dev.default>
  2. Crie as quatro tabelas. A ordem das colunas e os tipos de dados em cada instrução CREATE TABLE correspondem diretamente aos campos identificados na Etapa 1.

    • Crie a tabela não particionada bank_data:

      create table if not exists bank_data
      (
       age             BIGINT comment 'age',
       job             STRING comment 'job type',
       marital         STRING comment 'marital status',
       education       STRING comment 'education level',
       credit          STRING comment 'have a credit card',
       housing         STRING comment 'mortgagors',
       loan            STRING comment 'have loans',
       contact         STRING comment 'contact information',
       month           STRING comment 'month',
       day_of_week     STRING comment 'day of the week',
       duration        STRING comment 'duration',
       campaign        BIGINT comment 'number of contacts for the current campaign',
       pdays           DOUBLE comment 'time elapsed after the last contact',
       previous        DOUBLE comment 'number of previous contacts',
       poutcome        STRING comment 'results of previous marketing activities',
       emp_var_rate    DOUBLE comment 'employment variance rate',
       cons_price_idx  DOUBLE comment 'consumer price index',
       cons_conf_idx   DOUBLE comment 'consumer confidence index',
       euribor3m       DOUBLE comment '3-month Euribor',
       nr_employed     DOUBLE comment 'number of employees',
       fixed_deposit   BIGINT comment 'have a time deposit'
      );
    • Crie a tabela particionada bank_data_pt e adicione partições. A coluna credit funciona como chave de partição em vez de uma coluna de dados comum; portanto, a tabela possui 20 colunas de dados mais uma chave de partição.

      create table if not exists bank_data_pt
      (
       age             BIGINT comment 'age',
       job             STRING comment 'job type',
       marital         STRING comment 'marital status',
       education       STRING comment 'education level',
       housing         STRING comment 'mortgagors',
       loan            STRING comment 'have loans',
       contact         STRING comment 'contact information',
       month           STRING comment 'month',
       day_of_week     STRING comment 'day of the week',
       duration        STRING comment 'duration',
       campaign        BIGINT comment 'number of contacts for the current campaign',
       pdays           DOUBLE comment 'time elapsed after the last contact',
       previous        DOUBLE comment 'number of previous contacts',
       poutcome        STRING comment 'results of previous marketing activities',
       emp_var_rate    DOUBLE comment 'employment variance rate',
       cons_price_idx  DOUBLE comment 'consumer price index',
       cons_conf_idx   DOUBLE comment 'consumer confidence index',
       euribor3m       DOUBLE comment '3-month Euribor',
       nr_employed     DOUBLE comment 'number of employees',
       fixed_deposit   BIGINT comment 'have a time deposit'
      )partitioned by (credit STRING comment 'have a credit card');
      
      alter table bank_data_pt add if not exists partition (credit='yes') partition (credit='no') partition (credit='unknown');
    • Crie a tabela não particionada result_table1:

      create table if not exists result_table1
      (
       education   STRING comment 'education level',
       num         BIGINT comment 'number of persons'
      );
    • Crie a tabela não particionada result_table2:

      create table if not exists result_table2
      (
       education   STRING comment 'education level',
       num         BIGINT comment 'number of persons',
       credit      STRING comment 'have a credit card'
      );

Etapa 3: Verificar as tabelas

Verifique se todas as tabelas foram criadas e se os schemas estão corretos.

  1. Liste todas as tabelas no projeto:

    show tables;

    Todas as quatro tabelas aparecem na saída:

    ALIYUN$****:bank_data
    ALIYUN$****:bank_data_pt
    ALIYUN$****:result_table1
    ALIYUN$****:result_table2
  2. Inspecione o schema e as partições de cada tabela:

    O campo Size: 0 é esperado, pois a tabela ainda não contém dados. O tamanho aumenta após a importação dos dados.
    -- View the schema of bank_data.
    desc bank_data;
    -- View the schema of bank_data_pt.
    desc bank_data_pt;
    -- View the partitions of bank_data_pt.
    show partitions bank_data_pt;
    -- View the schema of result_table1.
    desc result_table1;
    -- View the schema of result_table2.
    desc result_table2;

    A saída de desc bank_data_pt; é semelhante a:

    +------------------------------------------------------------------------------------+
    | Owner: ALIYUN$****          | Project: doc_test_dev                                |
    | TableComment:                                                                      |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2021-05-17 14:02:21                                      |
    | LastDDLTime:              2021-05-17 14:02:21                                      |
    | LastModifiedTime:         2021-05-17 14:02:21                                      |
    +------------------------------------------------------------------------------------+
    | InternalTable: YES      | Size: 0                                                  |
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field           | Type       | Label | Comment                                     |
    +------------------------------------------------------------------------------------+
    | age             | bigint     |       | age                                        |
    | job             | string     |       | job type                                    |
    | marital         | string     |       | marital status                                        |
    | education       | string     |       | educational level                                    |
    | housing         | string     |       | mortgagors                                  |
    | loan            | string     |       | have loans                                  |
    | contact         | string     |       | contact information                                    |
    | month           | string     |       | month                                        |
    | day_of_week     | string     |       | day of the week                                      |
    | duration        | string     |       | duration                                    |
    | campaign        | bigint     |       | number of contacts for the current campaign                          |
    | pdays           | double     |       | time elapsed after the last contact                      |
    | previous        | double     |       | number of previous contacts                        |
    | poutcome        | string     |       | results of previous marketing activities                          |
    | emp_var_rate    | double     |       | employment variation rate                                |
    | cons_price_idx  | double     |       | consumer price index                              |
    | cons_conf_idx   | double     |       | consumer confidence index                              |
    | euribor3m       | double     |       | 3-month Euribor                                |
    | nr_employed     | double     |       | number of employees                                    |
    | fixed_deposit   | bigint     |       | have a time deposit                              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | credit          | string     | have a credit card                                        |
    +------------------------------------------------------------------------------------+

    A saída de show partitions bank_data_pt; confirma que todas as três partições foram criadas:

    credit=no
    credit=unknown
    credit=yes

Próximos passos

Com as quatro tabelas criadas e os schemas verificados, importe os dados dos arquivos de exemplo. Consulte Importar dados para tabelas.