Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:Connecteur Faker

Dernière mise à jour :Aug 09, 2026

Cette rubrique explique comment utiliser le connecteur Faker pour générer des données de test.

Contexte

Le connecteur Faker est un connecteur intégré à Realtime Compute for Apache Flink. Il génère des données de test à partir des expressions Java Faker que vous fournissez pour chaque champ d'une table. Utilisez ce connecteur pour produire des données de test afin de valider la logique métier lors du développement ou des tests.

Le tableau suivant décrit les capacités du connecteur Faker.

Élément

Détails

Types de table pris en charge

Table source et table de dimension

Mode d'exécution

Mode batch et mode streaming

Format de données

Sans objet

Métriques spécifiques au connecteur

Aucune

Type d'API

SQL

Prise en charge de la mise à jour ou de la suppression des données dans une table sink

Sans objet

Prérequis

Aucun

Limites

  • Le connecteur Faker est pris en charge uniquement dans Realtime Compute for Apache Flink VVR 4.0.12 ou version ultérieure.

  • Le connecteur prend uniquement en charge les types de données suivants : CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET et ROW.

  • Lorsqu'il est utilisé comme table de dimension dans une opération JOIN, le connecteur Faker n'effectue pas de recherche réelle dans la table de dimension. Il génère directement un résultat basé sur la clé de recherche transmise par la table source.

Syntaxe

CREATE TABLE faker_source (
  `name` STRING,
  `age` INT
) WITH (
  'connector' = 'faker',
  'fields.name.expression' = '#{superhero.name}',
  'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'
);

Paramètres WITH

Type

Paramètre

Description

Type

Obligatoire

Valeur par défaut

Remarques

Général

connector

Spécifie le type de connecteur.

String

Oui

Aucune

La valeur doit être faker.

fields.<field>.expression

Spécifie l'expression Java Faker utilisée pour générer les valeurs de ce champ.

String

Oui

Aucune

Pour plus d'informations, consultez la section Expressions de champ.

fields.<field>.null-rate

Spécifie la probabilité que la valeur du champ soit null.

Float

Non

0.0

Aucune

fields.<field>.length

Spécifie la taille de la collection pour les types de données ARRAY, MAP ou MULTISET.

Integer

Non

1

Aucune

Spécifique à la table source

number-of-rows

Spécifie le nombre de lignes à générer.

Integer

Non

-1

Si ce paramètre est défini, la table source est bornée. Sinon, elle est non bornée.

rows-per-second

Spécifie le taux de génération des données.

Integer

Non

10000

Aucune

Exemples

Exemple de table de dimension

CREATE TEMPORARY TABLE datagen_source (
  `character_id` INT,
  `location` STRING,
  `datagen_name` STRING,
  `user_fullname` ROW<first_name STRING, last_name STRING>,
  `user_data` ARRAY<STRING>,
  `user_score` Map<STRING, INT>,
  `user_books` MULTISET<STRING>,
  `proctime` AS PROCTIME()
) WITH (
  'connector' = 'faker',
  'fields.character_id.expression' = '#{number.numberBetween ''0'',''10000''}',
  'fields.location.expression' = '#{harry_potter.location}',
  'fields.datagen_name.expression' = '#{superhero.name}',
  'fields.user_fullname.first_name.expression' = '#{superhero.prefix}',
  'fields.user_fullname.last_name.expression' = '#{superhero.suffix}',
  'fields.user_data.expression' = '#{harry_potter.character}',
  'fields.user_data.length' = '2',
  'fields.user_score.key.expression' = '#{harry_potter.character}',
  'fields.user_score.value.expression' = '#{number.numberBetween ''10'',''100''}',
  'fields.user_score.length' = '2',
  'fields.user_books.expression' = '#{book.title}',
  'fields.user_books.length' = '2',
  'number-of-rows' = '5'
);

CREATE TEMPORARY TABLE faker_dim (
  `character_id` INT,
  `faker_name` STRING
) WITH (
  'connector' = 'faker',
  'fields.character_id.expression' = '#{number.numberBetween ''0'',''100''}',
  'fields.faker_name.expression' = '#{harry_potter.characters}'
);
    
SELECT
  l.character_id,
  l.location,
  l.datagen_name,
  l.user_fullname,
  l.user_data,
  l.user_score,
  l.user_books,
  c.faker_name
FROM datagen_source AS l
JOIN faker_dim FOR SYSTEM_TIME AS OF proctime AS c
ON l.character_id = c.character_id;

Expressions de champ

  • Format

    Chaque champ défini dans l'instruction DDL requiert une expression correspondante dans la clause WITH. L'expression doit respecter le format suivant : 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'. Le tableau ci-dessous décrit les composants de ce format.

    Paramètre

    Description

    field

    Le nom d'un champ dans l'instruction DDL.

    className

    Le nom de la classe Faker.

    Java Faker propose environ 80 classes Faker pour générer des expressions de champ. Sélectionnez une classe en fonction de vos besoins métier.

    Remarque

    Les noms des classes Faker ne sont pas sensibles à la casse.

    methodName

    Le nom de la méthode.

    Remarque

    Les noms de méthode ne sont pas sensibles à la casse.

    parameter

    Les paramètres d'entrée de la méthode.

    Remarque
    • Entourez les paramètres d'entrée de la méthode de deux guillemets simples consécutifs ('') pour les échapper correctement dans la chaîne d'expression.

    • Utilisez une virgule (,) pour séparer plusieurs paramètres.

  • Exemple

    Les étapes suivantes illustrent la construction d'une expression de champ, en prenant pour exemple l'expression du champ age 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' présentée dans la section Syntaxe Syntaxe :

    1. Dans la documentation de l'API Java Faker , repérez la classe Number.

    2. Dans la classe Number, identifiez la méthode numberBetween et consultez sa description.

      Cette méthode renvoie une valeur comprise dans une plage numérique spécifiée.

    3. À partir du nom de la classe (Number), du nom de la méthode (numberBetween) et des paramètres d'entrée (0 et 1000), construisez l'expression SQL pour le champ age : 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'.

      Cette expression génère une valeur comprise entre 0 et 1000 pour le champ age.