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.
Separador de rutas
El path-separator o el separador de rutas de extracción es un parámetro que se puede configurar. Por defecto, se usa el caracter “/”, pero si las estructuras de datos que se vayan a querer extraer lo contuvieran en el nombre, por ejemplo, es posible configurar otro distinto, para así facilitar la extracción correcta de dichas tablas. Para cambiarlo, se debe configurar en kerno, tot y en los plugins que se vayan a usar, de manera que en todos sea el mismo. Las propiedades a modificar son:
-
En Kerno
-
anjana.tot.extraction.pathSeparator: “/”
-
-
En Tot
-
tot.extraction.pathSeparator: “/”
-
-
En plugins:
-
Específicamente para PowerBI y Tableau: totplugin.pathSeparator: “/”
-
Cualquier otro plugin que no sea PowerBI ni Tableau: totplugin.connection.[<nombreConexion>].technology.pathSeparator: “/”
-
Cualquier carácter esta permitido excepto “:“ (por limitaciones de tecnología, si se configura en el YML el carácter “\“ se deberá incluir como “\\“ para poder ser usado).
Si se esta usando los plugin de AWS IAM, AWS S3 y/o Azure Storage no se debería dar valor a estas propiedades (tanto en kerno, tot como en los plugin) y dejar el valor por defecto.
Este separador se elige al momento de una instalación y no debe cambiar dada su importancia para poder localizar los objetos en la tecnología correspondiente para el muestro de datos y gobierno. Si es fundamentalmente necesario cambiarlo, consultar con Soporte Anjana.
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
/partition
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.