
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.