Le connecteur Datagen sert au débogage. Il génère des données de test aléatoires pour les tables source, ce qui permet de valider la logique métier lors du développement et des tests sans se connecter à une source de données externe. Il produit périodiquement des valeurs aléatoires conformes au schéma de votre table.
Le connecteur prend également en charge la syntaxe des colonnes calculées pour une génération de données flexible.
Fonctionnalités du connecteur
| Élément | Description |
|---|---|
| Type de table | Table source |
| Mode d'exécution | Mode batch et mode streaming |
| Format des données | N/A |
| Métrique | N/A |
| Type d'API | API SQL |
| Mise à jour ou suppression des données dans une table sink | N/A |
Limites
Seul Realtime Compute for Apache Flink utilisant Ververica Runtime (VVR) 2.0.0 ou une version ultérieure prend en charge le connecteur Datagen.
Syntaxe
CREATE TABLE datagen_source (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'datagen'
);
Paramètres de la clause WITH
| Paramètre | Type de données | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
connector |
String | Oui | Aucune | Doit être défini sur datagen. |
rows-per-second |
Long | Non | 10000 | Taux de génération des lignes, exprimé en lignes par seconde. |
number-of-rows |
Long | Non | Aucune | Nombre total de lignes à générer. Par défaut, la source est illimitée. Si un générateur de séquence est utilisé, la source devient automatiquement limitée une fois la séquence terminée. |
fields.<field>.kind |
String | Non | random |
Type de générateur pour le champ. Valeurs valides : random ou sequence. Pour plus de détails, consultez la section Générateurs. |
fields.<field>.min |
Identique au type de données de <field> |
Non | Valeur minimale du type de données du champ | Valeur minimale pour un générateur aléatoire. S'applique uniquement aux types numériques. |
fields.<field>.max |
Identique au type de données de <field> |
Non | Valeur maximale du type de données du champ | Valeur maximale pour un générateur aléatoire. S'applique uniquement aux types numériques. |
fields.<field>.max-past |
Duration | Non | 0 | Décalage maximal vers le passé par rapport à l'horodatage local actuel de la machine lors de la génération de valeurs d'horodatage aléatoires. S'applique uniquement aux types TIMESTAMP et TIMESTAMP_LTZ. |
fields.<field>.length |
Integer | Non | 100 | Longueur de la chaîne aléatoire ou taille de la collection générée. Types pris en charge : CHAR, VARCHAR, BINARY, VARBINARY, STRING, ARRAY, MAP, MULTISET. |
fields.<field>.start |
Identique au type de données de <field> |
Non | Aucune | Valeur de départ pour un générateur de séquence. |
fields.<field>.end |
Identique au type de données de <field> |
Non | Aucune | Valeur de fin pour un générateur de séquence. |
Remplacez <field> par le nom du champ défini dans votre instruction DDL.
Générateurs
Le connecteur Datagen prend en charge deux types de générateurs :
Générateur aléatoire : génère des valeurs aléatoires dans la plage configurée. Spécifiez
fields.<field>.minetfields.<field>.maxpour contrôler la plage des types numériques.Générateur de séquence : génère des valeurs ordonnées d'une valeur de départ à une valeur de fin. Lorsque la séquence est épuisée, la génération de données s'arrête et une table limitée est produite. Spécifiez
fields.<field>.startetfields.<field>.endpour définir la plage.
Le tableau suivant répertorie le type de générateur pris en charge pour chaque type de données.
| Type de données | Générateur pris en charge | Notes |
|---|---|---|
| BOOLEAN | Aléatoire | |
| CHAR | Aléatoire et séquence | |
| VARCHAR | Aléatoire et séquence | |
| BINARY | Aléatoire et séquence | |
| VARBINARY | Aléatoire et séquence | |
| STRING | Aléatoire et séquence | |
| DECIMAL | Aléatoire et séquence | |
| TINYINT | Aléatoire et séquence | |
| SMALLINT | Aléatoire et séquence | |
| INT | Aléatoire et séquence | |
| BIGINT | Aléatoire et séquence | |
| FLOAT | Aléatoire et séquence | |
| DOUBLE | Aléatoire et séquence | |
| DATE | Aléatoire | Toujours résolu à la date actuelle de la machine locale. |
| TIME | Aléatoire | Toujours résolu à l'heure actuelle de la machine locale. |
| TIMESTAMP | Aléatoire | Génère des valeurs dans la plage de décalage vers le passé par rapport à l'horodatage local actuel de la machine. Configurez le décalage avec fields.<field>.max-past. |
| TIMESTAMP_LTZ | Aléatoire | Génère des valeurs dans la plage de décalage vers le passé par rapport à l'horodatage local actuel de la machine. Configurez le décalage avec fields.<field>.max-past. |
| ROW | Aléatoire | Génère des sous-champs aléatoires. |
| ARRAY | Aléatoire | Génère des éléments aléatoires. |
| MAP | Aléatoire | Génère des paires clé-valeur aléatoires. |
| MULTISET | Aléatoire | Génère des éléments aléatoires. |
Exemples
Configuration minimale
Créez une table source avec les paramètres par défaut :
CREATE TABLE datagen_source (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'datagen'
);
Combinaison de générateurs de séquence et aléatoires
Dans la plupart des cas, le connecteur Datagen est utilisé conjointement avec la clause LIKE pour simuler une table existante. L'exemple suivant génère un ensemble de données limité en utilisant un générateur de séquence pour id et un générateur aléatoire pour score :
CREATE TABLE datagen_source (
id INT,
score INT
) WITH (
'connector' = 'datagen',
'fields.id.kind' = 'sequence',
'fields.id.start' = '1',
'fields.id.end' = '50',
'fields.score.kind' = 'random',
'fields.score.min' = '70',
'fields.score.max' = '100'
);
Le générateur de séquence produit des valeurs id de 1 à 50, puis s'arrête. Étant donné qu'un générateur de séquence est utilisé, la source est limitée. Le générateur aléatoire produit des valeurs score comprises entre 70 et 100.