Integraciones
Breadcrumbs

Extracción de Metadata de Ficheros

att_1_for_171901211.png


Extracción de metadata de ficheros







Control de versiones

Versión

Fecha de modificación

Responsable

Aprobador

Resumen de cambios

1.0

18/06/2024

Ana Melcón

Anjana Producto

Creación del documento.


Introducción

El objetivo de este documento es explicar sobre qué tipos de ficheros es posible extraer el metadato, las peculiaridades y qué información se extrae de cada uno.

El nombre que se indica en cada fichero es el nombre del atributo que debería existir en Anjana (name de la tabla attribute_definition) en las plantillas de objetos de las que se quiera extraer información.

Tipos de ficheros

CSV

Los ficheros de tipo csv se distinguen por su extensión “.csv”. Se interpretará cada columna como un dataset_field del que se rellenará la siguiente información:

  • name con el nombre del campo

  • physical_name con el nombre del campo

  • fieldDataType con el tipo de dato definido para el campo (puede ser boolean, number, string o date)

  • position posición que ocupa el campo

Los separadores admitidos para la extracción de csv son coma (,), punto y coma (;) y tabulación.

AVRO

Los ficheros de tipo avro se distinguen por su extensión “.avro”. Estos ficheros pueden ser únicos o particionados.

Se interpretará cada columna como un dataset_field del que se rellenará la siguiente información:

  • name con el valor del campo

  • physical_name con el nombre del campo

  • defaultValue con el valor por defecto definido para el campo

  • fieldDataType con el tipo de dato definido para el campo (puede ser record, enum, array, map, union, fixed, string, bytes, int, long, float, double, boolean o null)

  • position posición que ocupa el campo

  • description con la descripción del campo

  • alias los alias que el campo tiene

Además de estos valores presentes en todo campo de un fichero avro se pueden poner propiedades extras, todas las propiedades que se incluyan se recogerán y extraerán.

EXCEL

Los ficheros de tipo excel se distinguen por su extensión “.xls” y “.xlsx”. Se interpretará cada columna como un dataset_field del que se rellenará la siguiente información:

  • name con el valor del campo

  • physical_name con el nombre del campo

  • fieldDataType con el tipo de dato definido para el campo (puede ser string, boolean, number)

  • position posición que ocupa el campo

  • description con la descripción del campo

PARQUET

Los ficheros de tipo parquet se distinguen por su extensión “.parquet”. Estos ficheros pueden ser únicos o particionados.

Se interpretará cada columna como un dataset_field del que se rellenará la siguiente información:

  • name con el valor del campo

  • physical_name con el nombre del campo

  • fieldDataType con el tipo de dato definido para el campo (puede ser int64, int32, boolean, binary, float, double, int96 o fixed_len_type_array)

  • position posición que ocupa el campo

  • nullable indicando si el campo es nullable

  • length indicando longitud del campo

Solo aquellos campos que pertenezcan a tipos primitivos serán extraídos.

Estándares de organización

HADOOP

Tipos de directorios permitidos:

Con único fichero al final


/folder_1_lvl1

/folder_1_1_lvl2

fichero.extension


Con varias partes del mismo fichero al final

/folder_1_lvl1

/fecha=feb

part.000001.nombre.parquet

part.000002.nombre.parquet

/fecha=march

part.000003.nombre.parquet

part.000004.nombre.parquet

Se contarán como partes de un mismo fichero todos aquellos archivos contenidos dentro del mismo directorio que posean un nombre con el mismo número de caracteres.

Tipos de ficheros permitidos:
  • Parquet

  • Avro

  • CSV

  • Excel


Nomenclatura
Ficheros

Los ficheros deberán seguir una nomenclatura de part.000000.nombre.extension para ficheros particionados y de nombre.extension para ficheros completos. Sustituyendo los ‘0’ por el valor deseado para indicar que es la parte X de un fichero, es decir, si un fichero tuviera 2 partes habría part.000001.nombre.extension y part.000002.nombre.extension por ejemplo.

Directorios

Los directorios deberán seguir un patrón que indique el nivel de cada directorio, por ejemplo:


/folder_1_lvl1

/folder_1_1_lvl2

part.000001.nombre.parquet

part.000002.nombre.parquet

/folder_1_2_lvl2

/folder_1_2_1_lvl3

part.000001.nombre.parquet

part.000002.nombre.parquet



Delta Lake

Tipos de directorios permitidos:

Con único fichero al final

/folder_1_lvl1

/folder_1_1_lvl2

/_delta_log

fichero.parquet

Observar que en este formato existe una carpeta propia de DeltaLake cuyo contenido se ignora.


Con varias partes del mismo fichero al final

/folder_1_lvl1

/folder_1_1_lvl2

/_delta_log

000000.json

part.000001.nombre.parquet

part.000002.nombre.parquet

  • Se contarán como partes de un mismo fichero todos aquellos archivos contenidos dentro del mismo directorio que posean un nombre con el mismo número de caracteres.

  • Observar que en este formato existe una carpeta propia de DeltaLake cuyo contenido se ignora.

Con varias partes del mismo fichero al final y con particiones

/folder_1_lvl1

/folder_1_1_lvl2

/_delta_log

000000.json

/parition

part.000001.nombre.parquet

part.000002.nombre.parquet

part.000001.nombre.parquet

part.000002.nombre.parquet

  • Se contarán como partes de un mismo fichero todos aquellos archivos contenidos dentro del mismo directorio que posean un nombre con el mismo número de caracteres.

  • Observar que en este formato existe una carpeta propia de DeltaLake cuyo contenido se ignora.



Tipos de ficheros permitidos:

Parquet

Nomenclatura
Ficheros

Los ficheros deberán seguir una nomenclatura de part.000000.nombre.parquet para ficheros particionados y de nombre.parquet para ficheros completos. Sustituyendo los ‘0’ por el valor deseado para indicar que es la parte X de un fichero, es decir, si un fichero tuviera 2 partes habría part.000001.nombre.parquet y part.000002.nombre.parquet por ejemplo.

Directorios

Los directorios deberán seguir un patrón que indique el nivel de cada directorio, por ejemplo:

/folder_1_lvl1

/folder_1_1_lvl2

/_delta_log

000000.json

part.000001.nombre.parquet

part.000002.nombre.parquet

/folder_1_2_lvl2

/folder_1_2_1_lvl3

/_delta_log

000000.json

part.000001.nombre.parquet

part.000002.nombre.parquet


Además deberán incluir la carpeta _delta_log dentro de cada directorio con ficheros así como otra carpeta llamada partition con ficheros.