Construindo um pipeline simples em R

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[This article was first published on R – Mathew Analytics, and kindly contributed to R-bloggers]. (Você pode relatar problemas sobre o conteúdo desta página aqui)


Quer compartilhar seu conteúdo em R-bloggers? clique aqui se você tiver um blog, ou aqui se não tiver.

A. Introdução

Depois de concluir algum tipo de análise de dados, muitas vezes queremos automatizar esse processo para que seja executado em intervalos regulares. O que isso significa é que o código deve ser gerado para que a aquisição de dados, limpeza de dados, desenvolvimento de modelo, criação de documentos e outros componentes sejam totalmente executados do início ao fim sem qualquer intervenção humana. Neste post, compartilharei um exemplo de pipeline muito simples que mostra como podemos usar a linguagem de programação R para automatizar uma análise.

A análise subjacente que estamos tentando automatizar neste artigo envolve a extração de dados de um banco de dados SQL, a execução de alguns modelos de previsão de série temporal e a exportação dos resultados como um arquivo csv. Para esta tarefa, existem vários componentes que precisam ser criados. Os arquivos R a seguir dividirão o pipeline em componentes muito específicos que executarão partes específicas do processo.

  • helper_functions.R: Este arquivo contém várias funções para extrair os dados brutos, limpar os dados, modificar as strings e assim por diante.
  • modelagem_functions.R: Este arquivo conteria várias funções para cada modelo de previsão de série temporal que planejamos usar.
  • dataset_builder.R: contém o processo de extração dos dados brutos do SQL e os transforma em dados processados ​​que podemos alimentar em nossos modelos de previsão. Dentro desse arquivo, teríamos como fonte o conteúdo do arquivo de funções auxiliares para executar tarefas específicas.
  • execute_analysis.R: Este deve conter o código principal para executar todo o código. Isso importaria os pacotes desejados, construiria o conjunto de dados, executaria a modelagem e exportaria os resultados para um diretório. Dentro desse arquivo, usaríamos as funções auxiliares, funções de modelagem e código do construtor de conjunto de dados para concluir a tarefa.
Leia Também  Instalando e executando o Ubuntu em um MacBook Air de 2015

A estrutura do arquivo para tal empreendimento seria a seguinte. Observe que há um subdiretório queries que conterá um arquivo sql que será usado no arquivo dataset_builder para extrair os dados brutos do banco de dados.

B. Visão geral do código

Para entender melhor o que entra em nosso pipeline simples, vamos examinar cada arquivo e seu conteúdo.

B1. helper_functions.R

O conteúdo principal desse arquivo são duas funções definidas pelo usuário que serão usadas para analisar um arquivo sql e depois usá-lo para exportar dados de um banco de dados. A primeira dessas funções definidas pelo usuário é get_sql_query, que analisa um arquivo .sql e coleta seu conteúdo como uma variável de string. Essa consulta analisada será usada como um
argumento em get_sql_data, que se conecta a um banco de dados do servidor sql e extrai os dados desejados.

###############################################################################
### FUNCTION TO EXTRACT QUERY FROM A SQL FILE

get_sql_query 

B2. modeling_functions.R

The main contents of this file are user defined functions that will be used to train the univariate forecasting models on our data. For each algorithm that we plan to use, I have created separate functions that take a variety of arguments. The functions require the user to specify the training and test data, how many values to forecast, the columns of the date values, and so forth.

###############################################################################
### SIMPLE EXPONENTIAL SMOOTHING

SES_Forecast 

B3. dataset_builder.R

This file will be an ‘analytics script’ that extracts the raw data and produces the processed data set that will be used in our algorithms. To do that, we will source in the contents of the helper functions file and use
the sql file in the queries sub directory.

Let’s say that there is a table in SQL Server that contains data on each sale at an automotive dealership. The raw data looks like the following.

The get_sales_data file contains the following SQL snippet. All it does is aggregates the total number of units sold by date for each make and model.

SELECT 
	st.sale_date, 
  st.make,
  st.model,
	SUM(st.units) AS sales_cnt
FROM sales_table as st 
GROUP BY st.sale_date, st.make, st.model

Para usar este código SQL dentro do arquivo dataset_builder, importaremos o script SQL usando as duas funções definidas pelo usuário do arquivo de funções auxiliares.

source("./R/helper_functions.R")

which_query 

This will generate a data frame that contains the following data.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

The dataset builder file would also contain code that cleans values, aggregates by month, and other necessary actions. For example, the dataset builder may also contain the following code so that we only have monthly sales data for Subaru Forester sales.

mydat 

B4. execute_analysis.R

This final file will execute the entire process from start to end. It should start with a number of parameters that will determine how the script will run. For example, we would want to specify the packages that need to be imported, a logical variable to determine whether the output should be saved, and so forth.

#################################################################################################
### SET PARAMETERS

MAIN_PATH = "K:/Data Excellence/4 - Reducing Direct Clinical Costs/ATM/NP_Supply/NP_Supply_Estimation_V3/"

USE_THESE_PACKAGES 

These type of parameters will dictate how our main script will execute. For example, the vector with packages will be fed into an if else statement whereby uninstalled packages will be installed and then all required packages will be imported. Once this parameter has been created with the abstracted code, things can be modified and the script will still run as desired.

#################################################################################################
### IMPORT PACKAGES

new_packages 

Another parameter was get_latest_data, which is a logical variable that will be used to used to run the dataset_builder file when it is set to TRUE. When the get latest data parameter is set to true, the dataset_builder.R file will be sourced in and produce the final processed data that we plan to use in
our analysis. The resulting data set will then be saved as a csv file with the date within the file name.

#################################################################################################
### IMPORT DATA

log_info("execute_analysis: Importing raw data....")

if(GET_LATEST_DATA){
  source("./R/dataset_builder.R")
  fwrite(mydat_base, paste0("./data/final_contact_data_NY_", TIMESTAMP_SAVE, ".csv", sep=""))
} else {
  mydat_base 

Later in the execute analysis script, we would run each of the forecasting models and export the results as a csv file. Since the goal is to execute the process and save the results, the script will conclude with the following lines.

#################################################################################################
### EXPORT RESULTS 

if(SAVE_OUTPUT){ 
  
  log_info("Export final results")
  
  fwrite(final_output,
         paste0("K:/Data Excellence/4 - Reducing Direct Clinical Costs/ATM/NP_Supply/NP_Supply_Estimation_V3/output/", 
                "Supply_Estimates_Using_Averages_by_GeoZone_", 
                str_replace_all(Sys.Date(), "[^[:alnum:]]", ""),
                ".csv", sep=""))
  
}

log_info("Script completed...")

###############################################################################

C. Programar Script

Agora que construímos o código e o processo desejados, precisamos agendar esse código. Lembre-se de que o objetivo é que esse processo seja executado todas as semanas, sem a intervenção de um ser humano. Para aqueles que usam computadores Windows, a abordagem mais simples seria usar o complemento do agendador de tarefas que está disponível
via RStudio. Os usuários de Mac podem executar tarefas cron por meio do pacote cronR ou do addin 'agendador de tarefas cron' no RStudio.

Aqui estão as capturas de tela do agendador de tarefas cron no RStudio e como um processo pode ser agendado.

Esta postagem não se aprofundará no CronR, mas as etapas básicas para usar o pacote estão disponíveis aqui.

D. Conclusão

Esta postagem forneceu um exemplo de como construir um pipeline muito básico usando a linguagem de programação R. Quando estamos fazendo análise de dados em nossos trabalhos diários, raramente é satisfatório fazer projetos isolados em que a análise não está sendo atualizada regularmente. Isso requer um bom planejamento e exige que o usuário escreva um código abstrato, modular e que possa ser reutilizado. Para aqueles que estão se acostumando com essa abordagem, esta postagem deve fornecer um exemplo inicial de como executar esse tipo de desenvolvimento de pipeline.

Você é uma empresa que procura um cientista de dados freelance em tempo parcial para ajudá-lo a transformar seus dados em percepções acionáveis? Se sim, por favor contacte-me em [email protected] e vamos colaborar.

Fonte



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br