Extrayendo y filtrando datos de un fichero con Azure Data Lake Analytics

Extrayendo y filtrando datos de un fichero con Azure Data Lake Analytics

En el post de hoy vamos a ver cómo, haciendo uso de Azure Data Lake Analytics (ADLA), vamos a poder extraer datos de un fichero TSV, filtrar por un campo determinado, y devolver estos resultados en un formato distinto.

Para ello, vamos a usar un lenguaje usado en ADLA llamado U-SQL. Este lenguaje es una mezcla de las ventajas que nos ofrece SQL con la potencia y versatilidad que nos da C#. Con la ayuda de este lenguaje vamos a poder extraer y analizar tanto datos alojados en almacenes de datos no estructurados como datos típicamente relacionados.

Ahora vamos a ver paso a paso como realizar todo esto.

Primero, vamos a proceder a la creación del servicio de ADLA.

Asociado al servicio ADLA hay que crear un almacén de Azure Data Lake Store (ADLS), el cual usaremos para alojar el fichero TSV entrada y el de salida.

Vamos a crear una carpeta para el fichero de entrada y otra para el fichero de salida en el ADLS.

Hemos diseñado un fichero TSV que contiene marcas y modelos de coche con su precio.

Este fichero lo pondremos en la carpeta input.

 
// Input variables
DECLARE EXTERNAL @in = "input/marcas.tsv";
DECLARE EXTERNAL @out = "output/marcas.csv";

@searchlog =
EXTRACT fecha string,
id int,
marca string,
modelo string,
precio int
FROM @in
USING Extractors.Tsv(nullEscape:"#NULL#", skipFirstNRows:1);

@rs1 =
SELECT fecha, id, marca, modelo, precio
FROM @searchlog
WHERE precio > 50000;

OUTPUT @rs1
TO @out
USING Outputters.Csv(quoting:false, dateTimeFormat:null, outputHeader:true);

Partes a destacar en este script:

  • Una primera parte en la que se definen las rutas de entrada y salida de los ficheros.
  • El EXTRACT, en el que extraemos los datos del TSV. Se hace mediante extractores por defecto que ya posee ADLA de ficheros tipos TSV y CSV. En el extractor indicamos una serie de parámetros como el separador y que no se tenga en cuenta la primera fila del fichero, ya que esta fila corresponde al nombre de las columnas.
  • Filtrado de los datos por precio superior a 50000.
  • Creación del fichero CSV de salida mediante los outputter que también tiene por defecto ADLA. Aquí también indicamos una serie de parámetros para indicar el formato de los campos de tipo fecha y para solicitar que el fichero de salida lleve los nombres de las columnas.

Ahora la parte práctica, que es como ejecutar este script. Dentro de un servicio ADLA tenemos la posibilidad de lanzar un job.

Creamos el job y en él, copiamos el script anteriormente visto.

Comentar que en ADLA se cobra por tiempo de ejecución, por lo que según lo pesado que sean nuestros Jobs y el numero de ejecuciones que lancemos, tendremos un coste u otro.

Ahora, submitimos el job y esperamos a ver el resultado de la ejecución.

En el job graph se puede ver de forma visual la extracción de datos (se han obtenido y filtrado dos registros) y la posterior creación del fichero CSV.

Si vamos a la carpeta output, deberíamos tener el fichero CSV con esos datos filtrados.

Podemos observar que tenemos solo los registros con el importe superior a 50000.

Escrito por: Pedro Sánchez, technology team leader en Bravent.

2020-01-22T10:53:32+00:0022 enero, 2020|Categories: Azure|Tags: , , |0 Comments
Translate »