Format Général
Configurer les schémas et/ou dossiers CSV sous nodeConfig
et edgeConfig
:
nodeConfig:
# Configurer un schéma de node
# Nom du schéma
- schema:
# (mysql/postgresSQL/sqlserver/bigQuery, obligatoire) SQL qui extrait les champs de données
sql:
# (neo4j, obligatoire) nom du label dans Neo4J
label:
# (neo4j, optionnel) Utiliser la variable 'n' pour filtrer les données de ce label, par exemple, n.released > 1999; pas de filtre par défaut
where:
# (kafka, obligatoire) Sujet Kafka
topic:
# (kafka, optionnel) Offset Kafka, les formats supportés sont 'newest', 'oldest', '5', '2006-01-02 15:04:05 -0700', '2006-01-02 15:04:05'
offset:
# (csv/json/jsonl, obligatoire) Chemin du fichier de données
file:
# (csv, optionnel) Si le fichier CSV a un en-tête ; 'true' par défaut
head:
# (Toutes sources, optionnel) Configurer manuellement les champs de données
properties:
# (Toutes sources, optionnel) Nombre de lignes de données à sauter depuis le début
skip:
# (Toutes sources, optionnel) Nombre maximal de lignes de données à injecter
limit:
# Configurer plus de schémas de node
- schema:
...
# (dossier csv, obligatoire) Configurer un dossier de schéma de node, dans lequel les fichiers CSV sont nommés <schema>.node.csv, avec en-têtes et types (modification non supportée)
# Chemin du dossier
- dir:
# Configurer plus de dossiers de schéma de node
- dir:
edgeConfig:
# Configurer un schéma d'edge
- schema:
...
# Configurer plus de schémas d'edge
- schema:
...
# (dossier csv, obligatoire) Configurer un dossier de schéma d'edge, dans lequel les fichiers CSV sont nommés <schema>.edge.csv, avec en-têtes et types (modification non supportée)
- dir:
# Configurer plus de dossiers de schéma d'edge
- dir:
Détails des properties
nodeConfig:
- schema:
...
properties:
# Configurer un champ de données
# Nom du champ de données
- name:
# (Optionnel) Configurer ou modifier le nom du champ
new_name:
# (Optionnel) Modifier le nom du champ
type:
# (Optionnel) Préfixe à ajouter avant les données de _id, _from ou _to
prefix:
# Configurer plus de champs de données
- name:
new_name:
type:
prefix:
skip:
limit:
...
Classer les sources de données selon qu'elles contiennent le nom et le type de champ :
- Pas de nom : CSV sans en-tête
- Contient un nom :
- Pas de type : CSV avec en-tête mais sans type, JSON, JSONL
- Contient un type : CSV avec en-tête et type, MySQL, PostgreSQL, SQLServer, BigQuery, Neo4j, Kafka
properties
peut 1) configurer le nom et le type de champ non inclus, 2) modifier le nom et le type de champ inclus, et 3) ajouter un préfixe à la valeur du champ.
Validité des noms de champ :
- Référez-vous à Naming Convention des property
Validité du type de champ :
- Propriétés système :
_id
,_uuid
,_from
,_to
,_from_uuid
,_to_uuid
- Propriétés personnalisées veuillez vous référer à Data Types of Property
- Champs à ignorer :
_ignore
Types de champ qui supportent le préfixe : _id
, _from
, _to
Exemple : Configurer le nom et le type du champ
Lors de la configuration des noms et des types de champ pour un CSV sans en-tête, l'ordre de -name
doit être cohérent avec les colonnes de données dans le fichier. Comme:
A2CMX45JPSCTUJ,5,Le Meilleur Câble
A3EIML9QZO5NZZ,5,génial
A3C9F3SZWLWDZF,2,moins bon que le précédent
A1C60KQ8VJZBS5,4,Permet de changer les cordes facilement
properties:
- name: any
type: _id
- name: rating
type: _ignore
- name: comment
# Un champ dont le 'type' est omis sera réglé sur le type 'string'
Lorsqu'un fichier CSV sans en-tête a moins de
- name
configurés que ses colonnes réelles, une erreur sera signalée par défaut, ou réglez fitToHeader soussettings
sur 'true' afin d'ignorer les dernières colonnes non configurées.
Lors de la configuration des types de champs pour un fichier CSV avec en-tête mais sans type, l'ordre de -name
n'est pas nécessaire et normalement impossible d'être cohérent avec les colonnes de données dans le fichier. Comme:
_id,rating,comment
A2CMX45JPSCTUJ,5,Le Meilleur Câble
A3EIML9QZO5NZZ,5,génial
A3C9F3SZWLWDZF,2,moins bon que le précédent
A1C60KQ8VJZBS5,4,Permet de changer les cordes facilement
properties:
- name: rating
type: int32
- name: _id
type: _id
Lors de la configuration des types de champ pour un fichier JSON et JSONL, omettre type
et omettre - name
ont une logique de traitement différente. Comme:
[
{"_id":"A2CMX45JPSCTUJ", "rating":5, "comment":"Le Meilleur Câble"},
{"_id":"A3EIML9QZO5NZZ", "rating":5, "comment":"génial"},
{"_id":"A3C9F3SZWLWDZF", "rating":2, "comment":"moins bon que le précédent"},
{"_id":"A1C60KQ8VJZBS5", "rating":4, "comment":"Permet de changer les cordes facilement"}
]
properties:
- name: rating
type: int32
- name: _id
type: _id
Exemple : Modifier le nom et le type du champ
Lorsque les noms et/ou les types des champs de la source de données sont invalides dans le système Ultipa, ou ne sont pas compatibles avec la target property, utilisez new_name
et type
pour modifier. type
ne doit pas être omis dans ce cas, même si la property cible est de type string. Comme:
_id:_id,rating:int32,comment:string
A2CMX45JPSCTUJ,5,Le Meilleur Câble
A3EIML9QZO5NZZ,5,génial
A3C9F3SZWLWDZF,2,moins bon que le précédent
A1C60KQ8VJZBS5,4,Permet de changer les cordes facilement
properties:
- name: rating
type: string
- name: comment
new_name: content
Comme différentes sources de données peuvent avoir différents types de données supportés, Ultipa Transporter adaptera ces types de données à ceux supportés par Ultipa ; les types qui ne peuvent pas être adaptés seront signalés et automatiquement ignorés.
Exemple : Ajouter un préfixe à la valeur du champ
Lorsque les ID de node venant de la source de données ne sont pas uniques pour le graph, utilisez prefix
pour conditionner ces ID et les FROMs et TOs associés, c'est-à-dire traiter uniquement les champs de données qui sont _id
, _from
ou _to
. Comme:
id,name
1,Hubert Pirtle
2,John Fowler
3,Christopher Sanzot
id,name
1,VoxelCloud
2,Lifeforce Ventures
3,Dentsu Ventures
personID,companyID,shareInt
1,3,59
2,1,10
3,1,23
3,2,47
...
nodeConfig:
- schema: "person"
file: /Data/person.csv
head: true
properties:
- name: id
type: _id
prefix: person_
- schema: "company"
file: /Data/company.csv
head: true
properties:
- name: id
type: _id
prefix: company_
edgeConfig:
- schema: "holding"
file: /Data/holding.csv
head: true
properties:
- name: personID
type: _from
prefix: person_
- name: companyID
type: _to
prefix: company_
- name: shareInt
type: int32
...
Valeur de Champ Valide dans un CSV
string, text
- Lorsque
quotes
soussettings
est réglé surfalse
(valeur par défaut), un guillemet double est reconnu comme la limite du champ, deux guillemets doubles consécutifs sont reconnus comme un guillemet double à l'intérieur de la valeur du champ. Comme:
field1:string,field2:text,field3:string
abc,"a,b,c",pas de guillemet double dans ce champ
def,"d,e,f","un guillemet double "" dans ce champ"
ghi,"g,h,i",quotes réglé sur false
- Lorsque
quotes
soussettings
est réglé surtrue
, les guillemets doubles de toute quantité et n'importe où seront reconnus comme des guillemets doubles à l'intérieur de la valeur du champ, auquel cas les guillemets doubles ne peuvent pas être utilisés comme limites de champ. Comme:
field1:string,field2:text,field3:string
abc,"a",pas de guillemet double dans ce champ
def,"d",un guillemet double " dans ce champ
ghi,"g",quotes réglé sur true
décimal
"decimal:decimal(5,3)"
99.999
0.999
0.001
-99.000
-99.999
0.000
datetime, timestamp
time1:datetime,time2:datetime,time3:timestamp,time4:timestamp
1987-11-02,1987-11-02 01:25:52,1987-11-02T01:25:52+0400,562785952000
2001-08-14,2001-08-14 13:43:16,2001-08-14T13:43:16-1100,997767796000
1998-02-19,1998-02-19 16:15:03,1998-02-19T16:15:03+0200,887876103000
Plus de formats de la valeur de temps sont listés ci-dessous, notez que les informations de fuseau horaire seront ignorées si le type de champ est datetime:
[YY]YY-MM-DD HH:MM:SS
[YY]YY-MM-DD HH:MM:SSZ
[YY]YY-MM-DDTHH:MM:SSZ
[YY]YY-MM-DDTHH:MM:SS[+/-]0x00
[YY]YYMMDDHH:MM:SS[+/-]0x00
[YY]YY/MM/DD HH:MM:SS
[YY]YY/MM/DD HH:MM:SSZ
[YY]YY/MM/DDTHH:MM:SSZ
[YY]YY/MM/DDTHH:MM:SS[+/-]0x00
[YY]YY-MM-DD
[YY]YY/MM/DD
[YY]YYMMDD
liste
list1:int32[],list2:string[]
"[1,3,3]","[positif,réacheter]"
"[2,1,4]","[négatif]"
"[3,1,2]","[négatif,réacheter]"
"[4,2,4]","[positif]"
Les emplacements vides laissés pour les éléments indiquent la valeur
null
, par exemple, le deuxième élément dans [1,,3] estnull
ensemble
set1:set(int32),set2:set(string)
"[1,3]","[positif,réacheter]"
"[2,1,4]","[négatif]"
"[3,1,2]","[négatif,réacheter]"
"[4,2]","[positif]"
point
point1:point,point2:point,point3:point,point4:point
POINT(39.9 116.3),"{latitude:39.9,longitude:116.3}","[39.9,116.3]","39.9,116.3"
POINT(40.7 -74),"{latitude:40.7,longitude:-74}","[40.7,-74]","40.7,-74"
POINT(48.5 2.2),"{latitude:48.5,longitude:2.2}","[48.5,2.2]","48.5,2.2"