Les tables constituent l'unité fondamentale de stockage des données dans MaxCompute. Ce tutoriel vous guide dans la conception et la création de deux types de tables (non partitionnées et partitionnées) à partir d'exemples de données bancaires, puis dans la vérification des résultats.
Objectifs d'apprentissage :
Analyser un fichier de données et déterminer la structure de table appropriée
Créer des tables non partitionnées et partitionnées à l'aide du client MaxCompute
Ajouter des partitions à une table partitionnée
Vérifier que les tables ont été créées avec le schéma correct
Steps overview: Étape 1 : Concevoir les tables → Étape 2 : Créer les tables → Étape 3 : Vérifier les tables
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Le client MaxCompute installé et en cours d'exécution. Consultez la rubrique Installer et démarrer le client MaxCompute.
-
Un fichier de données CSV ou TXT à importer. Ce tutoriel utilise les fichiers d'exemple suivants :
Table non partitionnée : banking.txt
Table partitionnée (trois fichiers) : banking_nocreditcard.csv, banking_uncreditcard.csv et banking_yescreditcard.csv
-
L'autorisation CREATE TABLE sur votre projet MaxCompute. Cette autorisation est requise pour les utilisateurs RAM. Les titulaires de compte Alibaba Cloud en disposent par défaut.
Pour vérifier vos autorisations, consultez la rubrique Interroger les autorisations à l'aide de MaxCompute SQL.
Pour accorder des autorisations à un utilisateur RAM, consultez la rubrique Autorisations MaxCompute.
Notes d'utilisation
Les types de données des colonnes de votre table doivent correspondre à ceux de vos fichiers source. Toute incompatibilité de type empêche l'importation des données.
Étape 1 : Concevoir les tables
Avant d'écrire du code SQL, examinez vos données source afin de déterminer le nombre de colonnes, les noms des champs et les types de données pour chaque colonne.
Les fichiers d'exemple de ce tutoriel contiennent des données relatives aux emprunteurs hypothécaires. Les champs sont séparés par des virgules. L'aperçu suivant présente quelques lignes de chaque fichier :
-- 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
Comptez les colonnes, identifiez le type de données de chaque champ et choisissez des noms de colonnes significatifs. Le tableau suivant résume l'analyse des fichiers d'exemple.
Élément | Description |
Nombre de colonnes | Comptez le nombre de colonnes dans chaque fichier d'exemple et déterminez le nombre de colonnes de la table à créer :
|
Champs de la table | Identifiez les champs de chaque fichier d'exemple et déterminez les champs de la table à créer :
|
Types de données | Identifiez le type de données de chaque colonne dans les fichiers d'exemple :
|
Étape 2 : Créer les tables
Ce tutoriel crée au total quatre tables :
bank_data: table non partitionnée destinée à l'importation de l'ensemble complet des donnéesbank_data_pt: table partitionnée, aveccreditcomme clé de partitionresult_table1: table non partitionnée destinée au stockage des résultats de requêteresult_table2: table non partitionnée destinée au stockage des résultats de requête
Pour plus de détails sur la syntaxe CREATE TABLE, consultez la rubrique Créer une table. Pour plus d'informations sur la gestion des tables et des partitions, consultez les rubriques Opérations sur les tables et Opérations sur les partitions.
-
Optional: Basculez vers votre projet MaxCompute cible. Ignorez cette étape si le projet était déjà sélectionné au démarrage du client.
use doc_test_dev;L'invite de commande se met à jour pour confirmer le basculement :
doc_test_dev.default> -
Créez les quatre tables. L'ordre des colonnes et les types de données de chaque instruction CREATE TABLE correspondent directement aux champs identifiés à l'étape 1.
-
Créez la table non partitionnée
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' ); -
Créez la table partitionnée
bank_data_ptet ajoutez des partitions. La colonnecreditest utilisée comme clé de partition au lieu d'être une colonne de données standard ; la table comporte donc 20 colonnes de données plus une clé de partition.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'); -
Créez la table non partitionnée
result_table1:create table if not exists result_table1 ( education STRING comment 'education level', num BIGINT comment 'number of persons' ); -
Créez la table non partitionnée
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' );
-
Étape 3 : Vérifier les tables
Vérifiez que toutes les tables ont été créées et que les schémas sont corrects.
-
Listez toutes les tables du projet :
show tables;Les quatre tables apparaissent dans le résultat :
ALIYUN$****:bank_data ALIYUN$****:bank_data_pt ALIYUN$****:result_table1 ALIYUN$****:result_table2 -
Inspectez le schéma et les partitions de chaque table :
Le champ
Size: 0est attendu, car la table ne contient encore aucune donnée. La taille augmentera après l'importation des données.-- 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;Le résultat de
desc bank_data_pt;ressemble à ceci :+------------------------------------------------------------------------------------+ | 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 | +------------------------------------------------------------------------------------+Le résultat de
show partitions bank_data_pt;confirme que les trois partitions ont été créées :credit=no credit=unknown credit=yes
Étapes suivantes
Une fois les quatre tables créées et les schémas vérifiés, importez les données depuis les fichiers d'exemple. Consultez la rubrique Importer des données dans des tables.