Sélectionner les lignes à ingérer
S'applique à : connecteurs SaaS
connecteurs de base de données
connecteurs basés sur la query
Le filtrage de lignes vous permet d'ingérer uniquement les données dont vous avez besoin en appliquant des conditions similaires à une clause WHERE SQL. Cela améliore les performances (en particulier pour les charges initiales avec des données historiques) et minimise la duplication des données (en particulier dans les environnements de développement).
Connecteurs pris en charge
- Google Analytics
- Salesforce
- ServiceNow
- Tous les connecteurs basés sur des query, y compris Oracle, Teradata, SQL Server, MySQL, MariaDB et PostgreSQL
Fonctionnement du filtrage des lignes
Le filtrage des lignes agit comme un filtre WHERE en SQL. Vous pouvez comparer les valeurs de la source avec des entiers, des booléens, des chaînes de caractères et d'autres types de données. Vous pouvez également utiliser des combinaisons complexes de clauses pour extraire uniquement les données dont vous avez besoin.
Le filtrage des lignes s'applique lors du chargement initial et des mises à jour incrémentielles ultérieures.
Limitations
Le filtrage des lignes présente les limitations suivantes :
-
Salesforce : Le filtrage des lignes n'est pris en charge que sur deux colonnes : la clé primaire (ID, si disponible) et la colonne de curseur. Le connecteur sélectionne la colonne de curseur dans la liste suivante, par ordre de préférence :
SystemModstamp,LastModifiedDate,CreatedDateetLoginTime. -
ServiceNow :
- Seul l'opérateur
ANDest pris en charge. L'opérateurORn'est pas actuellement disponible. Par exemple,u_age = 40 AND u_active = TRUEfonctionne, maisu_age = 40 OR u_active = TRUEne fonctionne pas. - Les Timestamp des filtres doivent être au format suivant :
YYYY-MM-DD HH: mm:SS(par exemple,2004-03-02 17:14:59). - Pour filtrer sur un champ de référence, comparez son sous-champ
valueausys_idde l'enregistrement référencé (par exemple,assigned_to.value = '5137153cc611227c000bbd1bd8cd2005'). Le connecteur applique des filtres de champs de référence après avoir récupéré les lignes de ServiceNow, afin que la quantité de données lue par le connecteur depuis la source ne soit pas limitée.
- Seul l'opérateur
-
Mises à jour des lignes ou des query : Le connecteur ne supprime pas une ligne lorsqu'elle correspond au filtre lors du chargement initial, mais la ligne ou la query est mise à jour de sorte qu'elle ne corresponde plus à un chargement ultérieur. Le connecteur n'ingère pas non plus une ligne qui ne correspondait pas à la query lors d'une mise à jour précédente du pipeline, mais qui correspond maintenant lors d'une mise à jour ultérieure.
Configurer le filtrage de lignes
Pour configurer un pipeline avec un filtrage de lignes, ajoutez la configuration row_filter à la spécification de votre pipeline. Par exemple :
pipeline_spec = """
{
"name": "...",
"ingestion_definition": {
"connection_name": "...",
"objects": [
{
"table": {
"source_schema": "...",
"source_table": "...",
"destination_catalog": "...",
"destination_schema": "...",
"destination_table": "...",
"table_configuration": {
"row_filter": "..."
}
}
}
]
},
"channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)
Exemples
- Salesforce
- Google Analytics
- ServiceNow
Ingérer des données après un certain timestamp système :
"row_filter": "SystemModstamp > '2025-06-10T23:40:11.000-07:00'"
Ingérer une ligne spécifique :
"row_filter": "Id = 'a00Qy00000vps2NIAQ'"
Les colonnes numériques telles que event_timestamp (un long) doivent utiliser des littéraux numériques non cités dans la valeur du filtre (par exemple, event_timestamp >= 1712224270703246). Les valeurs numériques entre guillemets empêchent le filtrage côté serveur, ce qui entraîne des chargements initiaux lents. Les colonnes de chaîne telles que event_date doivent être citées (par exemple, event_date >= '20240101').
Ingérer des données après un certain timestamp d'événement :
"row_filter": "event_timestamp >= 1712224270703246"
Ingestion des données pour une date d'événement particulière :
"row_filter": "event_date = '2025-01-01'"
Ingérer des données pour les utilisateurs actifs :
"row_filter": "is_active_user = TRUE"
Ingérer les données pour les plateformes non-web :
"row_filter": "platform != 'WEB'"
Ingérer des données avec plusieurs conditions :
"row_filter": "event_timestamp >= 1712224270703246 AND (platform != 'WEB' OR is_active_user = FALSE)"
Ingérer des données après un certain timestamp d'événement :
"row_filter": "sys_updated_on > '2004-03-02 17:14:59'"
Ingérer des données pour les utilisateurs actifs :
"row_filter": "u_active = TRUE"
Ingérer les données pour des utilisateurs spécifiques :
"row_filter": "u_name = 'johnsmith'"
Ingérer des données avec plusieurs conditions :
"row_filter": "u_active = TRUE AND u_name = 'johnsmith'"
Ingérer les lignes qui référencent un enregistrement spécifique :
"row_filter": "assigned_to.value = '5137153cc611227c000bbd1bd8cd2005'"
Opérateurs pris en charge
Le tableau suivant présente les opérateurs pris en charge pour le filtrage des lignes :
Opérateur | Pris en charge |
|---|---|
| Oui |
| Salesforce et Google Analytics uniquement |
| Oui |
| Oui |
| Non |
| Non |
| Oui |
| Oui |
Comportement du filtrage de ligne dans les cas extrêmes
Le tableau suivant décrit le comportement de filtrage des lignes dans les scénarios de cas limites.
Scénario | Comportement | refresh requis |
|---|---|---|
Une ligne ne correspond pas au filtre lors du chargement initial, puis est mise à jour pour y correspondre lors d'un chargement ultérieur. | La ligne est ingérée lors de la prochaine mise à jour du pipeline. | Non |
Une ligne correspond au filtre lors du chargement initial, puis elle est mise à jour de manière à ne plus y correspondre. | La ligne n'est pas supprimée lors de la prochaine mise à jour du pipeline. | Non |
La query est mise à jour, et une ligne précédemment non ingérée correspond maintenant. | La ligne n'est pas ingérée lors de la prochaine mise à jour du pipeline. | Oui (refresh complète requise) |
La query est mise à jour et une ligne précédemment ingérée ne correspond plus. | La ligne n'est pas supprimée lors de la prochaine mise à jour du pipeline. | Non |