Data mapping και μορφές δεδομένων: πρακτικός οδηγός
JSON, XML, CSV, flat files και EDI, schemas, mapping πεδίων και lookups, και οι παγίδες που «σπάνε» τα integrations: κωδικοποιήσεις, υποδιαστολή, ημερομηνίες και ζώνες ώρας.
Κάθε integration, όπως κι αν είναι φτιαγμένο, κάνει στη μέση το ίδιο πράγμα: παίρνει δεδομένα στη μορφή που βολεύει ένα σύστημα και τα αναδιαμορφώνει στη μορφή που περιμένει ένα άλλο. Το e-shop στέλνει την παραγγελία σε JSON, το ERP θέλει XML, η αποθήκη διαβάζει αρχείο κειμένου σταθερού μήκους και το λογιστήριο ανοίγει ένα CSV στο Excel. Αυτή η αναδιαμόρφωση είναι το data mapping, και εκεί κρύβονται τα περισσότερα ήσυχα αλλά ακριβά bugs των integrations.
Ο οδηγός καλύπτει τις μορφές που θα συναντήσετε, από τι αποτελείται ένα mapping, τις παγίδες που πιάνουν σχεδόν κάθε ομάδα (ειδικά με ελληνικά δεδομένα) και πώς να συγκρίνετε εργαλεία mapping.
Οι μορφές που θα συναντήσετε
JSON
Η προεπιλογή για σύγχρονα REST APIs και e-shops. Objects, arrays, strings, αριθμοί, booleans και null. Διαβάζεται
εύκολα, αλλά δεν έχει δικό του τύπο ημερομηνίας ούτε τυποποιημένο τρόπο να πει «αυτός ο αριθμός έχει δύο δεκαδικά»,
οπότε κάθε API εφευρίσκει τις δικές του συμβάσεις.
XML
Ακόμη παντού σε ERPs, υπηρεσίες του δημοσίου και παλαιότερα SOAP APIs. Πιο φλύαρο από το JSON, αλλά με ώριμα εργαλεία: XSD schemas για έλεγχο δομής και τύπων, namespaces για να μη συγκρούονται ονόματα, και XSLT για μετασχηματισμούς. Προσοχή στα namespaces: δύο στοιχεία που μοιάζουν ίδια μπορεί να είναι διαφορετικά αν διαφέρει το namespace.
CSV και αρχεία με διαχωριστικό
Η μορφή των exports, των imports και του «στείλε μου απλώς ένα αρχείο». Απλή μέχρι να μην είναι: ποιο διαχωριστικό (κόμμα ή ερωτηματικό, που χρησιμοποιεί εξ ορισμού το Excel με ελληνικές ρυθμίσεις), αν τα πεδία είναι σε εισαγωγικά, τι γίνεται όταν η περιγραφή ενός είδους περιέχει το διαχωριστικό, και αν υπάρχει γραμμή επικεφαλίδων.
Flat files σταθερού μήκους
Κάθε πεδίο καταλαμβάνει συγκεκριμένες θέσεις στη γραμμή, για παράδειγμα οι χαρακτήρες 1-10 είναι ο κωδικός πελάτη. Συνηθισμένα σε τράπεζες, παλαιότερα ERPs και συστήματα αποθήκης. Εύθραυστα, γιατί ένας χαρακτήρας παραπάνω μετατοπίζει όλα τα επόμενα πεδία.
EDI
Τα EDIFACT και X12 είναι τυποποιημένα επιχειρηματικά έγγραφα (παραγγελίες, τιμολόγια, δελτία αποστολής) με segments και elements που χωρίζονται με ειδικούς χαρακτήρες. Είναι ταυτόχρονα μορφή και σύνολο επιχειρηματικών κανόνων. Τα αναλύουμε στον οδηγό για B2B και EDI.
Schemas: γράψτε κάτω το σχήμα
Ένα schema περιγράφει πώς είναι ένα έγκυρο έγγραφο: ποια πεδία υπάρχουν, ποια είναι υποχρεωτικά, τύποι, μήκη και επιτρεπτές τιμές. Το JSON Schema, το XSD, οι οδηγοί υλοποίησης EDI, ακόμη και ένα καλογραμμένο spreadsheet για ένα CSV, παίζουν αυτόν τον ρόλο.
Τα schemas μετράνε στο mapping γιατί μετατρέπουν υποθέσεις σε γεγονότα. Το «το ERP δέχεται ItemCode έως 20
χαρακτήρες» ελέγχεται αυτόματα. Το «νομίζω ότι είναι μικρό» όχι. Αν ένα σύστημα δεν δίνει schema, μαζέψτε μερικά
πραγματικά δείγματα και γράψτε ένα μόνοι σας· τα περισσότερα εργαλεία mapping φτιάχνουν ένα πρώτο προσχέδιο από δείγμα.
Από τι αποτελείται ένα mapping
Ένα mapping είναι ένα σύνολο κανόνων, ένας για κάθε πεδίο προορισμού. Σχεδόν κάθε κανόνας ανήκει σε μία από αυτές τις κατηγορίες:
| Τύπος κανόνα | Παράδειγμα |
|---|---|
| Απευθείας αντιγραφή | order.id → SalesOrder/ExternalRef |
| Μετονομασία/αναδιάταξη | Εμφωλευμένο customer.address.city → επίπεδο ShipCity |
| Μετατροπή μορφής | 2026-10-23T14:05:00Z → 23/10/2026 |
| Συνένωση/διάσπαση | firstName + lastName → CustomerName |
| Lookup | Τρόπος πληρωμής card → κωδικός ERP 07 |
| Προεπιλογή/σταθερά | Company = 01 σε κάθε παραγγελία |
| Υπολογισμός | Καθαρή αξία γραμμής = ποσότητα × τιμή − έκπτωση |
| Συνθήκη | Αν η country δεν είναι GR, κατηγορία ΦΠΑ «ενδοκοινοτική απαλλαγή» |
| Επανάληψη/άθροιση | Μία γραμμή προορισμού ανά γραμμή πηγής, ή σύνολο από όλες τις γραμμές |
Τα lookups θέλουν ιδιαίτερη προσοχή. Οι μεταφράσεις κωδικών (κατηγορίες ΦΠΑ, τρόποι πληρωμής, κωδικοί αποθηκών, μονάδες μέτρησης) αλλάζουν με τον καιρό και συχνά διαφέρουν ανάμεσα σε test και παραγωγή. Κρατήστε τις σε πίνακα που συντηρείται έξω από τη λογική του mapping, όχι hardcoded μέσα σε αυτή.
Οι παγίδες που «σπάνε» τα integrations
Κωδικοποίηση χαρακτήρων και ελληνικά
Τα ελληνικά είναι η κλασική παγίδα. Τα σύγχρονα APIs χρησιμοποιούν UTF-8, αλλά πολλά ελληνικά ERPs και παλαιότερα συστήματα κάνουν export σε Windows-1253 (ή ISO-8859-7). Διαβάστε ένα αρχείο Windows-1253 σαν UTF-8 και η «Αθήνα» γίνεται σκουπίδια ή ερωτηματικά. Μερικοί πρακτικοί κανόνες:
- Μάθετε ρητά την κωδικοποίηση κάθε interface με αρχεία. Μην τη μαντεύετε από ένα δείγμα.
- Μετατρέψτε μία φορά, στην είσοδο, και δουλεύετε σε UTF-8 μέσα στο integration.
- Προσοχή στο byte-order mark (BOM) στην αρχή αρχείων UTF-8· κάποια συστήματα «σκοντάφτουν» σε αυτό, άλλα το χρειάζονται (το Excel, για παράδειγμα, βασίζεται σε αυτό για να αναγνωρίσει UTF-8 σε CSV).
- Ελέγξτε τα μήκη πεδίων σε χαρακτήρες ή bytes. Ένα ελληνικό γράμμα είναι δύο bytes σε UTF-8, οπότε ένα πεδίο 40 bytes χωρά μόνο 20 ελληνικούς χαρακτήρες.
- Αποφασίστε τι κάνετε με τόνους και κεφαλαία στις αντιστοιχίσεις: τα «ΑΘΗΝΑ», «Αθήνα» και «αθηνα» μάλλον πρέπει να θεωρούνται η ίδια πόλη.
Υποδιαστολή: κόμμα ή τελεία
Στην Ελλάδα το 1.250,40 σημαίνει χίλια διακόσια πενήντα και σαράντα λεπτά. Στο JSON είναι 1250.40. Ένα CSV από
ελληνικό Excel και ένα JSON από e-shop μπορεί να διαφωνούν και στην υποδιαστολή και στο διαχωριστικό χιλιάδων. Κάντε
parse τους αριθμούς με ρητή μορφή, ποτέ «δοκιμαστικά», και αποφύγετε τύπους κινητής υποδιαστολής για χρηματικά ποσά. Η
στρογγυλοποίηση πρέπει να γίνεται μία φορά, σε συγκεκριμένο σημείο, συνήθως ανά γραμμή και σε δύο δεκαδικά, όπως
στρογγυλοποιεί και το ERP.
Ημερομηνίες και ζώνες ώρας
Το 03/04/2026 είναι 3 Απριλίου στην Ελλάδα και 4 Μαρτίου στις ΗΠΑ. Ένα timestamp χωρίς ζώνη ώρας είναι διφορούμενο.
Και η Ελλάδα αλλάζει ανάμεσα σε EET (UTC+2) και EEST (UTC+3), οπότε μια παραγγελία στις 00:30 τοπική ώρα την 1η Απριλίου
ανήκει σε άλλη μέρα σε UTC. Αυτό μετράει για ημερομηνίες τιμολογίων, ημερήσια batches και ό,τι έχει cut-off.
- Ανταλλάσσετε timestamps σε ISO 8601 με offset (
2026-04-01T00:30:00+03:00) ή σε UTC. - Μετατρέπετε σε τοπική ημερομηνία μόνο όταν το απαιτεί επιχειρηματικός κανόνας (ημερομηνία τιμολογίου, ημέρα παράδοσης).
- Να είστε σαφείς με πεδία που είναι μόνο ημερομηνία: η ημερομηνία γέννησης ή τιμολογίου δεν έχει ζώνη ώρας και δεν πρέπει να αποκτήσει.
Κενό, απόν και null
Το «το πεδίο λείπει», «το πεδίο υπάρχει αλλά είναι κενό» και «το πεδίο είναι null» μπορεί να σημαίνουν τρία
διαφορετικά πράγματα για το σύστημα προορισμού. Αποφασίστε για κάθε σημαντικό πεδίο αν η κενή τιμή σημαίνει «σβήσ’ το»
ή «άφησέ το ως έχει». Από εδώ προέρχονται πολλά περιστατικά τύπου «η ενημέρωση έσβησε το τηλέφωνο του πελάτη».
Μήκη, περικοπές και τύποι
Ένα όνομα είδους 120 χαρακτήρων σε πεδίο ERP 50 χαρακτήρων θα κοπεί, θα απορριφθεί ή θα κοπεί σιωπηλά διαφορετικά σε
κάθε σύστημα. Τα αρχικά μηδενικά χάνονται όταν ένας κωδικός όπως 00123 αντιμετωπίζεται ως αριθμός. Μεγάλα αριθμητικά
IDs χάνουν ακρίβεια σε κάποιους JSON parsers. Αντιμετωπίζετε τους κωδικούς ως strings, εκτός αν θα κάνετε πράξεις με
αυτούς.
Επαναλαμβανόμενες δομές
Γραμμές παραγγελίας, πολλές διευθύνσεις, πολλά τηλέφωνα. Μάθετε αν ο προορισμός δέχεται πολλά, ένα ή συγκεκριμένο αριθμό από το καθένα, και τι κάνετε με τα υπόλοιπα.
Τεκμηριώστε τα mappings
Ένα mapping που υπάρχει μόνο μέσα σε ένα εργαλείο ελέγχεται δύσκολα, παραδίδεται δύσκολα και η επιχείρηση δεν μπορεί να το επιβεβαιώσει. Κρατήστε δίπλα του μια προδιαγραφή mapping: έναν πίνακα με πεδίο πηγής, πεδίο προορισμού, κανόνα, παραδείγματα τιμών και υπεύθυνο για κάθε πίνακα lookup. Δεν χρειάζεται κάτι εντυπωσιακό, ένα spreadsheet αρκεί, αρκεί να ενημερώνεται και να ελέγχεται όταν αλλάζει το mapping.
Δύο συνήθειες βοηθούν πολύ:
- Κρατάτε πραγματικά δείγματα εγγράφων (ανωνυμοποιημένα) για κάθε interface, μαζί με τα δύσκολα: ελληνικοί χαρακτήρες, μεγάλα ονόματα, γραμμές μηδενικής αξίας, πιστωτικά.
- Ελέγχετε τα mappings με αυτά τα δείγματα αυτόματα. Ο οδηγός για testing integrations εξηγεί πώς να το εντάξετε στη δουλειά σας.
Συνηθισμένα λάθη
- Mapping με βάση το όνομα του πεδίου και όχι τη σημασία του. Το
dateστο e-shop μπορεί να είναι ημερομηνία παραγγελίας, πληρωμής ή τελευταίας μεταβολής. Ρωτήστε. - Hardcoded κωδικοί. Κωδικοί ΦΠΑ και πληρωμής στη μέση ενός mapping γίνονται πρόβλημα συντήρησης την πρώτη φορά που αλλάζουν.
- Αγνόηση της αντίστροφης κατεύθυνσης. Αν δεδομένα επιστρέφουν (κατάσταση, αριθμοί τιμολογίων), κάντε mapping και σε αυτά και βεβαιωθείτε ότι τα IDs ταιριάζουν.
- Test μόνο του happy path. Μία καθαρή παραγγελία-δείγμα αποδεικνύει ελάχιστα.
- Point-to-point mappings παντού. Με πολλά συστήματα, το mapping κάθε ζεύγους χωριστά πολλαπλασιάζει τη δουλειά. Ένα κοινό ενδιάμεσο μοντέλο μπορεί να βοηθήσει· δείτε το canonical data model.
Πώς να συγκρίνετε εργαλεία
- Ποιες μορφές χρειάζεστε; Αν υπάρχουν EDI ή αρχεία σταθερού μήκους, ελέγξτε για εγγενή υποστήριξη, όχι «γίνεται με script».
- Γραφικό, κώδικας ή και τα δύο; Τα γραφικά εργαλεία ελέγχονται πιο εύκολα με μη-developers. Το mapping σε κώδικα συγκρίνεται και κάνει versioning πιο εύκολα. Πολλές ομάδες θέλουν και τα δύο.
- Πώς συντηρούνται τα lookups; Αλλάζουν οι πίνακες κωδικών χωρίς νέο deploy, και με διαφορετικές τιμές ανά περιβάλλον;
- Έλεγχος κωδικοποίησης και τοπικών ρυθμίσεων. Ορίζετε ρητά character sets, μορφές αριθμών και μάσκες ημερομηνιών;
- Testing. Τρέχετε γρήγορα ένα mapping με δείγμα και βλέπετε το αποτέλεσμα;
- Πού τρέχει; Αυτόνομο εργαλείο σχεδίασης, μέρος πλατφόρμας integration ή βιβλιοθήκη μέσα στον κώδικά σας.
Τα εργαλεία της αγοράς
Με αλφαβητική σειρά. Το καθένα ταιριάζει σε διαφορετικό τρόπο δουλειάς.
- Altova MapForce. Εξειδικευμένο γραφικό εργαλείο mapping με ευρεία υποστήριξη μορφών (XML, JSON, βάσεις δεδομένων, flat files, EDI, Excel). Δημοφιλές σε ομάδες που θέλουν δυνατό οπτικό mapper και μπορούν να παράγουν κώδικα ή να τρέχουν τα mappings σε server προϊόν.
- Azure Logic Apps Data Mapper. Οπτικός mapper στα Logic Apps (Standard) για μετασχηματισμούς XML και JSON, με functions για τις συνηθισμένες μετατροπές. Φυσική επιλογή αν τα integrations σας τρέχουν ήδη σε Azure.
- Boomi maps. Στην πλατφόρμα integration του Boomi, ένα Map component συνδέει ένα source profile με ένα destination profile, με έτοιμες functions για ημερομηνίες, αριθμούς, strings και lookups, και Cross Reference Tables για μεταφράσεις κωδικών. Ταιριάζει καλύτερα όταν το mapping είναι μέρος μιας ευρύτερης ροής integration που φτιάχνετε επίσης στο Boomi, γιατί connectors, mapping και χειρισμός σφαλμάτων βρίσκονται στο ίδιο process.
- DataWeave στο MuleSoft. Συναρτησιακή γλώσσα μετασχηματισμών ενσωματωμένη στο MuleSoft Anypoint. Οι developers εκτιμούν την εκφραστικότητά της για JSON, XML και CSV, και το ότι τα mappings είναι κώδικας με versioning και unit tests.
- XSLT και jq. Ανοιχτά πρότυπα και εργαλεία, όχι προϊόντα: XSLT για XML, jq για JSON. Δωρεάν, ισχυρά και ευρέως υποστηριζόμενα, αλλά χρειάζονται developers, και τα σύνθετα mappings συντηρούνται δύσκολα από άλλους.
Αν ήδη έχετε πλατφόρμα integration, ο δικός της mapper είναι συνήθως το σωστό σημείο εκκίνησης. Ένα αυτόνομο εργαλείο αξίζει όταν το mapping είναι από μόνο του μεγάλο μέρος της δουλειάς, για παράδειγμα με πολλούς συνεργάτες EDI.
Επόμενα βήματα
Δύο πρακτικά άρθρα δείχνουν αυτές τις ιδέες στο Boomi:
- Mapping παραγγελίας από JSON σε XML με maps και profiles στο Boomi: profiles από δείγματα, μορφές ημερομηνίας, lookups και testing.
- Μετάφραση κωδικών ανάμεσα σε συστήματα με τα Cross Reference Tables του Boomi: κατηγορίες ΦΠΑ, τρόποι πληρωμής και κωδικοί αποθηκών χωρίς hardcoding.