Gérer le remplissage pour les objets d'un flux

Dans Datastream, un flux peut remplir les données historiques et diffuser les modifications en cours vers une destination. Lorsque vous avez créé un flux, vous avez configuré des informations sur la base de données source du flux.

Si vous avez coché la case Remplir les données historiques, Datastream diffuse toutes les données existantes, en plus des modifications apportées aux données, de la source vers la destination.

Si vous n'avez pas coché cette case, Datastream ne diffuse que les modifications apportées aux données. Pour que Datastream diffuse un instantané de toutes les données existantes de la source vers la destination, vous devez lancer le remplissage des objets contenant ces données. Les objets se présentent sous la forme de schémas, de tables et de colonnes de base de données.

Une autre raison d'initier le remplissage d'un objet est la désynchronisation des données entre la source et la destination. Par exemple, un utilisateur peut supprimer des données de la destination par inadvertance, et les données sont alors perdues. Dans ce cas, le lancement du remplissage pour l'objet sert de mécanisme de réinitialisation, car toutes les données sont diffusées dans la destination en une seule fois. Les données sont donc synchronisées entre la source et la destination.

Après avoir lancé le remplissage d'un objet, vous pouvez l'arrêter. Dans l'exemple précédent, l'utilisateur modifie le schéma de la base de données, et le schéma ou les données sont corrompus. Vous ne souhaitez pas que ce schéma ni ces données soient diffusés dans la destination. Vous arrêtez donc le remplissage pour l'objet.

Vous pouvez également arrêter le remplissage des objets à des fins d'équilibrage de charge. Datastream peut exécuter plusieurs remplissages en parallèle. Cela peut entraîner une charge supplémentaire sur la source. Si la charge est importante, arrêtez le remplissage pour les objets, puis lancez-le pour chacun d'eux, un par un.

États des objets

Voici les différents états du cycle de vie de l'initialisation et de l'arrêt du remplissage pour un objet :

  • Aucun état (représenté dans l'UI par -) : les raisons pour lesquelles un objet reçoit cet état sont les suivantes :

    • Le flux n'a pas démarré.
    • La case Remplir les données historiques n'a pas été cochée (le remplissage est donc défini comme manuel).
    • L'objet est exclu explicitement du remplissage automatique.
    • Le flux est configuré pour inclure les tables futures. Dans ce cas, lorsqu'une table est ajoutée à la source, aucune tâche de remplissage automatique n'est créée pour elle (car les nouvelles tables ne contiennent généralement pas de données historiques à remplir).
  • Pending : le remplissage n'a pas encore commencé pour l'objet.

  • Active : le remplissage est en cours pour l'objet.

  • Completed : le remplissage est terminé pour l'objet.

  • Stopped : le remplissage est arrêté pour l'objet. Si le remplissage est à nouveau lancé pour l'objet, Datastream diffusera toutes les données existantes associées à l'objet depuis la source vers la destination.

  • Failed : le remplissage a échoué pour l'objet et doit être relancé.

Déclencher le remplissage

  1. Accédez à la page Flux dans la console Google Cloud .

    Accéder à la page "Flux"

  2. Cliquez sur le flux contenant les objets pour lesquels vous souhaitez lancer un remplissage.

  3. Cliquez sur l'onglet Objets.

  4. Cochez la case de chaque objet pour lequel vous souhaitez lancer le remplissage.

  5. Cliquez sur Lancer le remplissage.

  6. Si vous n'avez sélectionné qu'un seul objet, cliquez sur INITIATE OBJECT BACKFILL (LANCER LE REMPLISSAGE DE L'OBJET) dans la boîte de dialogue. Sinon, si vous avez sélectionné plusieurs objets, cliquez sur INITIER LE REMPLISSAGE DES OBJETS.

    Datastream commencera le remplissage pour les objets que vous avez sélectionnés. L'état de chaque objet passera de Pending à Active, puis à Completed. Lorsqu'un objet a l'état Completed, cela signifie que Datastream a lu toutes les données de l'objet, mais que les données sont peut-être encore en cours de chargement vers la destination.

Lancer un remplissage partiel

En plus des remplissages complets, vous pouvez effectuer un remplissage partiel pour charger un sous-ensemble spécifique de données de la source vers la destination. Pour ce faire, vous devez fournir une clause SQL WHERE en tant que filtre personnalisé.

Datastream accepte le remplissage partiel de l'historique pour les sources suivantes :

  • SQL Server
  • Spanner
  • Oracle
  • PostgreSQL
  • MySQL

Pour lancer un remplissage partiel :

  1. Accédez à la page Flux dans la console Google Cloud .

    Accéder à la page "Flux"

  2. Cliquez sur le flux contenant les objets pour lesquels vous souhaitez lancer un remplissage.

  3. Cliquez sur l'onglet Objets.

  4. Sélectionnez l'objet pour lequel vous souhaitez lancer le remplissage.

  5. Cliquez sur Déclencher le remplissage.

  6. Dans le panneau qui s'affiche, cochez la case Activer le filtre personnalisé.

  7. Saisissez votre clause SQL WHERE. Exemple :product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'

  8. Cliquez sur Déclencher le remplissage.

Datastream valide le filtre. Si la validation échoue, un message d'erreur s'affiche au-dessus de l'éditeur. Si la validation réussit, Datastream lance le job de remplissage.

Syntaxe des filtres personnalisés acceptée

Lorsque vous fournissez un filtre personnalisé, Datastream est compatible avec un sous-ensemble fondamental de la syntaxe de la clause WHERE SQL. Voici les éléments compatibles :

  • Opérateurs logiques : AND, OR
  • Opérateurs de comparaison : =, <, >, <=, >=, !=
  • Conditions : IN, NOT IN, IS NULL, IS NOT NULL
  • Regroupement : parenthèses () pour définir des groupes de conditions
  • Valeurs :

    • Chaînes : texte entre guillemets simples, par exemple 'value'.
    • Nombres : entiers (123), nombres décimaux (123.45), nombres négatifs (-10) et nombres avec exposants (1.2e3).
    • Valeurs booléennes : mots clés TRUE ou FALSE sensibles à la casse.
  • Identifiants :

    • Qualification : les noms de colonnes peuvent être entièrement qualifiés à l'aide de points pour spécifier le schéma ou la table (par exemple, myColumn, myTable.myColumn ou mySchema.myTable.myColumn).
    • Identifiants non mis entre guillemets : ils peuvent contenir des lettres, des chiffres et des traits de soulignement, et doivent commencer par une lettre ou un trait de soulignement. La sensibilité à la casse des noms de colonnes ou de tables dépend de la base de données cible.
    • Identifiants entre guillemets doubles : ils doivent être placés entre guillemets doubles (").

Limites du remplissage partiel

Certaines instructions, certains opérateurs et certains mots clés sont explicitement interdits. Leur utilisation génère une erreur. Exemples :

  • Commentaires, tels que -- ou /* */.
  • Fonctions, par exemple UPPER(column) et NOW().
  • Expressions arithmétiques, par exemple column + 1 > 10.
  • L'opérateur LIKE Les caractères génériques tels que % ou _ ne sont pas acceptés avec LIKE.
  • L'opérateur BETWEEN Utilisez >= et <= à la place.
  • Sous-requêtes, par exemple (SELECT ...) dans la clause WHERE.
  • CASE, par exemple CASE WHEN ... END.
  • Comparaisons de colonnes, comme column1 = column2. Les comparaisons doivent être effectuées avec des littéraux.
  • DATE et TIME types ou fonctions spécifiques.
  • Opérateurs spécifiques aux tableaux ou à JSON.
  • Casting explicite : par exemple, CAST(column AS INT).

Arrêter le remplissage

  1. Accédez à la page Flux dans la console Google Cloud .

    Accéder à la page "Flux"

  2. Cliquez sur le flux contenant les objets pour lesquels vous souhaitez arrêter le remplissage.

  3. Cliquez sur l'onglet Objets.

  4. Cochez la case correspondant à chaque objet pour lequel vous souhaitez arrêter le remplissage.

  5. Cliquez sur Arrêter le remplissage.

  6. Si vous n'avez sélectionné qu'un seul objet, cliquez sur Arrêter le remplissage de l'objet dans la boîte de dialogue. Sinon, si vous avez sélectionné plusieurs objets, cliquez sur Arrêter les remplissages d'objets.

    Datastream arrêtera le remplissage pour les objets que vous avez sélectionnés, et l'état de chaque objet passera à Stopped.

    Lorsqu'un objet présente cet état, le remplissage est arrêté pour cet objet. Si le remplissage est à nouveau lancé pour l'objet, Datastream diffusera toutes les données existantes associées à l'objet depuis la source vers la destination.

Étapes suivantes