Integraciones

File System - Metadata de Ficheros


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.