Exportar archivos de formato de columna de ancho fijo

Las empresas de servicios públicos cuyos sistemas de facturación y de información de clientes admiten archivos de formato de ancho fijo pueden integrarse con BEACON mediante exportaciones de archivos de ancho fijo. Todos los tipos de exportación del Export Data Service (EDS) v1 y v2 de BEACON admiten esta función.


Acerca de los archivos de ancho fijo
Los archivos con columnas de ancho fijo son archivos de texto que tienen anchos de columna conocidos y fijos. Cada línea del archivo representa un registro con valores en los campos account_id, location_id, location address, billing address, meter_id, endpoint_sn, etc.

Al configurar archivos con columnas de ancho fijo, usted especifica las columnas según el carácter en el que comienza la columna en particular, seguido del número de caracteres en esa columna.

El término ancho describe el número total de caracteres por entrada. Los anchos comunes son 128, 256 y 512 caracteres.

BEACON admite archivos de cualquier ancho. Para garantizar la compatibilidad, asegúrese de que el ancho exportado coincida con el ancho que su sistema espera recibir.


Las configuraciones de archivo de formato de ancho fijo son únicas para cada empresa de servicios públicos que las utiliza. BEACON le permite personalizar la configuración de sus exportaciones de ancho fijo mediante un formato de especificación estándar de Python.

Este formato define:

  • El ancho o número de caracteres en una columna.
  • El tipo de contenido de la columna, que puede ser una cadena de caracteres o una fecha y hora.
  • Y un relleno que se usa para separar las columnas con contenido “en blanco”.

 

SUGERENCIA: Las columnas se pueden repetir tantas veces como sea necesario. Por ejemplo, read_time se puede usar una primera vez para mostrar la hora en que se tomó una lectura y una segunda vez para mostrar la fecha en que se tomó una lectura.

Formato de especificación de Python

Cuando defina entradas en un archivo de ancho fijo, use este formato

'{!S:<W.W}'

para crear una cadena con un ancho determinado.

Use este formato

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

para crear entradas de fecha y hora.

Los símbolos y caracteres en medio

'{ ... }'

realizan las siguientes funciones:

!S: le dice a BEACON que convierta los valores que le siguen en una cadena.

< el signo «menor que» le dice a BEACON que justifique la cadena hacia la izquierda. (> le dice a BEACON que justifique la cadena hacia la derecha; ^ centra la cadena).

W.W establece el ancho de la cadena, donde W representa el valor del ancho deseado. Es decir, reemplace W con el número de caracteres en una columna determinada. Por ejemplo, 10.10 le dice a BEACON que cree una cadena de 10 caracteres de ancho.

%x%x%x establece los parámetros de fecha y hora en función del valor introducido después del símbolo %. Por ejemplo, %d mostrará el día. %H mostrará la hora. De tal manera que, por ejemplo, %m%d%y mostrará el mes, día y año (09052019), mientras que %H%M%S mostrará los valores para las horas, minutos y segundos (00:00:00).

Puede utilizar otros parámetros y argumentos de la Especificación de Python para personalizar sus llamadas a la interfaz de programación de aplicaciones (Application Programming Interface, API) de ancho fijo. Para obtener más detalles, consulte la Especificación de formato de Python.

NOTA: Los ejemplos aquí presentados requieren Python 3.

Pasos para definir archivos de ancho fijo

Al realizar las llamadas a la API para exportar archivos de formato de ancho fijo, use corchetes [ ] para declarar una matriz de JSON.

Siga estos pasos para definir archivos de ancho fijo:

  1. Utilice un corchete abierto ([) para comenzar cada entrada.
    [
  2. Especifique el ancho de la primera columna al ingresar el número del carácter en el que comienza la columna y el número de caracteres en la columna. Por ejemplo:
    1, 15
  3. Ingrese el nombre que corresponde a aquello que representa la columna (account_id, location_address_line1, etc.). Asegúrese de poner el nombre de la columna entre comillas simples (‘). Por ejemplo:
    'Account_id'
  4. Defina el diseño de la columna utilizando el formato de Especificación de Python:'{:<15.15}'
  5. Cierre la entrada al agregar un corchete cerrado (]):
    ]

    Cuando termine, su archivo de ancho fijo podría verse como este ejemplo:

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 línea 2 [1, 15, ‘account_id’, ‘{:<15.15}'] establece la primera columna en un ancho de 15 caracteres que contienen una cadena justificada a la izquierda y se asigna al encabezado de columna account_id. La línea 3 [16, 15, 'endpoint_sn', '{:<15.15}'] establece la columna endpoint_sn en un ancho de 15 caracteres justificados a la izquierda que comienza en el carácter 16. La línea 4 [31, 9, 'billing_read', '{:0>9.9}’] establece la columna billing_read en un ancho de 15 caracteres justificados a la derecha que comienza en el carácter 31.

Las líneas 5, 8, 14 y 15 son rellenos de columna, lo que significa que definen columnas vacías.

La línea 15 usa el formato

'{:0>2.2}'

que, cuando se usa junto con el argumento,

.format('')

le dirá a BEACON que agregue 00 al registro en las posiciones de carácter 127 y 128. Por ejemplo:

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

Y read_time aparece en las líneas 11 y 12, lo que le permite mostrar la fecha de lectura y la hora de lectura en columnas separadas.

También observe el formato de la fecha:

{:%m%d%y}

Y de la hora:

{:%H%M%S}

Por supuesto, puede obtener fechas europeas simplemente cambiando el orden de mes, día, año a día, mes, año:

{:%d%m%y}

 

CURL

#Use este enunciado cURL a fin de publicar una solicitud para exportar
#un archivo de formato de ancho fijo que incluya las lecturas de medidor de intervalo
#para un rango de fechas determinado.

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}"&#93;,
    &#91;15,"endpoint_sn","{:<15.15}"&#93;,
    &#91;9,"read","{:0>9.9}"],
    [16,"filler","{:<16.16}"&#93;,
    &#91;1,"service_point_id","{:<1.1}"&#93;,
    &#91;10,"meter_id","{:<10.10}"&#93;,
    &#91;21,"filler","{:<21.21}"&#93;,
    &#91;5,"filler","{:<5.5}"&#93;,
    &#91;6,"read_time","{:%m%d%y}"&#93;,
    &#91;6,"read_time","{:%H%M%S}"&#93;,
    &#91;5,"filler","{:<5.5}"&#93;,
    &#91;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.

A %d blogueros les gusta esto: