Exportation de fichiers de type colonnes à largeur fixe

Les services dont les systèmes de facturation et d’informations client prennent en charge les fichiers de type largeur fixe peuvent les intégrer à BEACON via des exportations de fichiers à largeur fixe. Tous les types d’exportations BEACON EDS v1 et v2 prennent en charge cette fonctionnalité.


À propos des fichiers de type largeur fixe
Les fichiers de type colonnes à largeur fixe sont des fichiers texte présentant des largeurs de colonne connues et fixes. Chacune des lignes du fichier correspond à un enregistrement et comporte des valeurs pour account_id (id du compte), location_id (id de l’emplacement), location address (adresse de l’emplacement), billing address (adresse de facturation), meter_id (id du compteur), endpoint_sn (numéro de série du point de terminaison), etc.

Lorsque vous configurez des fichiers de type colonnes à largeur fixe, vous devez indiquer le caractère avec lequel la colonne commence, suivi du nombre de caractères dans cette colonne.

Le terme largeur décrit le nombre total de caractères par entrée. La largeur est généralement de 128, 256 ou 512 caractères.

BEACON prend en charge n’importe quelle largeur de fichier. Pour garantir la compatibilité, assurez-vous que la largeur exportée correspond à celle attendue par votre système.


Les configurations de fichiers de type largeur fixe sont propres au service qui les utilise. BEACON vous permet de personnaliser la configuration de vos exportations de type largeur fixe à l’aide d’un format de spécification Python standard.

Ce format définit :

  • la largeur ou le nombre de caractères d’une colonne;
  • le type de contenu de la colonne (chaîne de caractères ou date-heure);
  • le remplissage utilisé pour séparer les colonnes vides.

CONSEIL: Les colonnes peuvent être répétées autant de fois que nécessaire. Par exemple, la colonne read_time (heure de la lecture) peut être utilisée une première fois pour renvoyer l’heure à laquelle une lecture a été prise et une seconde fois pour renvoyer la date de cette lecture.

Format de spécification Python

 

Lorsque vous définissez les entrées d’un fichier de type largeur fixe, utilisez ce format

'{!S:<W.W}'

pour créer une chaîne d’une largeur donnée.

Utilisez ce format

'{!S:<%m%d%y}'

pour créer des entrées date-heure.

Les symboles et les caractères placés entre

'{ ... }'

permettent de réaliser les fonctions suivantes

 

:!S: indique à BEACON de convertir en chaîne les valeurs qui suivent.

Le symbole « inférieur à » < indique à BEACON d’aligner la chaîne à gauche. (> indique à BEACON d’aligner la chaîne à droite et ^ de la centrer).

W.W définit la largeur de la chaîne, où W correspond à la valeur de la largeur souhaitée. Autrement dit, vous devez remplacer W par le nombre de caractères d’une colonne donnée. Par exemple, 10.10 indique à BEACON de créer une chaîne de 10 caractères de large.

%x%x%x définit les paramètres date-heure en fonction de la valeur saisie après le symbole %. Par exemple, %d renvoie le jour. %H renvoie l’heure. Par conséquent, %m%d%y renvoie le mois, le jour et l’année (09052019), tandis que %H%M%S renvoie des valeurs pour les heures, les minutes et les secondes (00:00:00).

Vous pouvez utiliser d’autres arguments et paramètres de spécification Python pour personnaliser vos appels d’API de type largeur fixe. Pour plus d’informations, consultez Spécification de format Python.

REMARQUE : Les exemples montrés nécessitent Python 3.

Étapes pour la définition de fichiers de type largeur fixe

 

Lorsque vous émettez des appels d’API pour exporter des fichiers de type largeur fixe, utilisez des crochets [ ] pour déclarer le tableau JSON.

Suivez ces étapes pour définir des fichiers de type largeur fixe :

  1. Commencez chaque entrée par un crochet ouvrant ([).
    [
  2. Indiquez la largeur de la première colonne en saisissant le caractère par lequel la colonne commence et le nombre de caractères de celle-ci. Par exemple,
    1, 15
  3. Saisissez le nom de l’élément représenté par cette colonne (account_id [id du compte], location_address_line1 [ligne 1 de l’adresse de l’emplacement], etc.). Assure-vous d’indiquer le nom des colonnes entre guillemets simples (’). Par exemple,
    'Account_id'
  4. Définissez la disposition de la colonne à l’aide du format de spécification Python :’{:<15.15}’.
  5. Terminez l’entrée en ajoutant un crochet fermant (]) :
    ]

    Une fois que vous aurez terminé, votre fichier de type largeur fixe devrait ressembler à cet exemple :

1 export_format_spec = [

2     [1, 15, 'account_id', '{:<15.15}'],

3     [16, 15, 'endpoint_sn', '{:<15.15}'],

4     [31, 9, 'billing_read', '{:0>9.9}'],

5     [40, 16, 'filler', '{:<16.16}'],

6     [56, 1, 'service_point_id', '{:<1.1}'],

7     [57, 10, 'meter_id', '{:<10.10}'],

8     [67, 21, 'filler', '{:<21.21}'],

9     [88, 10, 'utility_use_2', '{:<10.10}'],

10    [98, 5, 'filler', '{:<5.5}'],

11    [103, 6, 'read_time', '{:%m%d%y}'],

12    [109, 6, 'read_time', '{:%H%M%S}'],

13    [115, 8, 'service_point_route', '{:<8}'],

14    [123, 4, 'filler', '{:<4.4}'],

15    [127, 2, 'filler', '{:0>2.2}']

16 ]

La ligne 2 [1, 15, ’account_id’, ’{:<15.15}’] donne à la première colonne une largeur de 15 caractères contenant une chaîne alignée à gauche et mappée à l’en-tête de colonne account_id.

 

La ligne 3 donne à la colonne [16, 15, ’endpoint_sn’, ’{:<15.15}’] endpoint_sn une largeur de 15 caractères alignés à gauche commençant au 16e caractère.

 

La ligne 4 [31, 9, ’billing_read’, ’{:0>9.9}’] donne à la colonne billing_read une largeur de 15 caractères alignés à droite commençant au 31e caractère.

Les lignes 5, 8, 14 et 15 sont des remplissages de colonne, ce qui signifie qu’elles définissent des colonnes vides.

La ligne 15 utilise le format

'{:0>2.2}'

qui, lorsque utilisé avec l’argument

.format('')

indiquera à BEACON d’ajouter 00 à l’enregistrement aux positions de caractère 127 et 128. Par exemple,

'{:0>2.2}'.format('')

En outre, les lignes 11 et 12 contiennent read_time, ce qui permet de renvoyer la date et l’heure de lecture dans des colonnes séparées.

Notez également le format de la date :

{:%m%d%y}

et de l’heure :

{:%H%M%S}

Vous pouvez bien évidemment utiliser le format de date européen en remplaçant l’ordre mois, jour, année par jour, mois, année :

{:%d%m%y}

CURL

#Utilisez cette instruction cURL pour envoyer une demande d’exportation
#d’un fichier de type largeur fixe comprenant des lectures
#de compteur à intervalles pour une plage de dates donnée.</pre>
curl -X POST -uusername:password \
-H "Content-Type: application/x-www-form-urlencoded" \
-d Start_Date=2016-02-01T00:00:00Z \
-d End_Date=2016-02-29T23:59:59Z \
-d Output_Format='fixed_width' \
--data-urlencode Format_JSON='[
    [15,"account_id","{:<15.15}"],
    [15,"endpoint_sn","{:<15.15}"],
    [9,"read","{:0>9.9}"],
    [16,"filler","{:<16.16}"],
    [1,"service_point_id","{:<1.1}"],
    [10,"meter_id","{:<10.10}"],
    [21,"filler","{:<21.21}"],
    [5,"filler","{:<5.5}"],
    [6,"read_time","{:%m%d%y}"],
    [6,"read_time","{:%H%M%S}"],
    [5,"filler","{:<5.5}"],
    [2,"filler","{:0>2.2}"]
]' \
-d Limit=10 \
https://api.beaconama.net/v2/eds/range
Knowledge Base

User Guide
Follow via Email

Enter your email address to get new content notifications by email.

%d