---
# System prepended metadata

title: Instalando e Rodando o módulo de bloqueio de frotas em 10 passos simples (ATUALIZADO DIA 08/05/2023)

---

# Instalando e Rodando o módulo de bloqueio de frotas em 10 passos simples (ATUALIZADO DIA 08/05/2023)
1. criar um ambiente virtual com o python 3.8
2. Baixar os pacotes pip do celestia e do fluttershy em `s3://cinnecta-datascience/ciass/datascience-gads/packages/` e instalá-los com pip install (o calestia deve ser instalado primeiro)
3. digitar no terminal `fluttershy` e a seguinte tela deverá aparecer:
```bash=
Usage: fluttershy [OPTIONS] COMMAND [ARGS]...

  Main CLI entrypoint

Options:
  --metapath TEXT   Path to metadata JSON file  [required]
  --envpath TEXT    Path to dotenv file  [default: ./.env]
  --lconfig TEXT    Logging JSON configuration file  [default: logger.json]
  --memory INTEGER  Amount of memory to allocate for PySpark  [default: 8]
  --help            Show this message and exit.

Commands:
  action-rac
  action-zarp
  auto-rac
  auto-zarp
  clear-cache
  gads-auth
  preprocess-rac
  preprocess-zarp  Execute preprocessing methods
```
4. baixar arquivos: 
	a) Metadado (metadata): s3://cinnecta-datascience/ciass/datascience-gads/arquivos_conf/metadata.json
	b) logger (lconfig): s3://cinnecta-datascience/ciass/datascience-gads/arquivos_conf/logger.json
	c) client-secret: s3://cinnecta-datascience/ciass/datascience-gads/arquivos_conf/client_secret.json

5. Autenticar credenciais e salvando novo token
 OBS: é importante ter instalado o cli da aws e ter as credenciais configuradas!!!
```bash=
fluttershy --metapath /home/clovis/Documentos/datascience-gads/usage/metadata.json --lconfig /home/clovis/Documentos/datascience-gads/usage/logger.json gads-auth --client-secret /home/clovis/Documentos/Projects/secrets/client_secret.json
```

```bash=
2022-11-28 17:35:01 | INFO     | fluttershy.cli : _____ START CLI EXECUTION
2022-11-28 17:35:01 | WARNING  | fluttershy.cli : Dotenv not found in the path ./.env
2022-11-28 17:35:01 | INFO     | aiobotocore.credentials : Found credentials in shared credentials file: ~/.aws/credentials
2022-11-28 17:35:02 | INFO     | fluttershy.gads.authentication : Fetch new token
Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=915670997416-s8l9ngh5uffsmf9006jl5arafaeh1o6d.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fadwords&state=YcLB1Gs5zIhinAXIu6CqGB4NHFFQ0L&prompt=consent&access_type=offline
2022-11-28 17:35:12 | INFO     | google_auth_oauthlib.flow : "GET /?state=YcLB1Gs5zIhinAXIu6CqGB4NHFFQ0L&code=4/0AfgeXvvHk_4bAllPOOK_mh1bmw7v_mJoj9EfczI3inxveoOHOBtH4AdRbfx64QtLYXZAqw&scope=https://www.googleapis.com/auth/adwords HTTP/1.1" 200 65
2022-11-28 17:35:16 | INFO     | fluttershy.gads.authentication : Saving Credentials in file tmp/token/.gads_token

```

6. Subir arquivos de bloqueio RAC e ZARP para o s3:
	* RAC : s3://cinnecta-datascience/ciass/datascience-gads/localiza-rac/data/raw/ (será algo como 'Bloqueios (MKT) 28.11.xlsx')
	* ZARP: s3://cinnecta-datascience/ciass/datascience-gads/localiza-zarp/data/raw/ (será algo como 'Bloqueios ZARP 28.11.xlsx')
> Estes arquivos serão enviados segunda, quarta e sexta por e-mail.

7. Executar bloqueios na CLI
	* ZARP
	```bash=
	fluttershy --metapath /home/clovis/Documentos/datascience-gads/usage/metadata.json --lconfig /home/clovis/Documentos/datascience-gads/usage/logger.json auto-zarp --prep-ocupacao --create-decisions --act-generalistas --act-locals
	```
	* RAC
	```bash=
	fluttershy --metapath /home/clovis/Documentos/datascience-gads/usage/metadata.json --lconfig /home/clovis/Documentos/datascience-gads/usage/logger.json auto-rac --prep-ocupacao --create-cluster_frotas --create-decisions --act-generalistas
	```
8. Enviar arquivo processado em resposta no e-mail de ZARP: s3://cinnecta-datascience/ciass/datascience-gads/localiza-zarp/data/processed/gen_camps/<arquivo do dia>
	 
9. Atualizar dados de performance (pelo menos 30 minutos depois de ter feito os bloqueios)
	
**RAC** 
```bash=
fluttershy --metapath /home/clovis/Documentos/datascience-gads/usage/metadata.json --lconfig /home/clovis/Documentos/datascience-gads/usage/logger.json preprocess-rac --prep-performance
```
**ZARP**
```bash=
fluttershy --metapath /home/clovis/Documentos/datascience-gads/usage/metadata.json --lconfig /home/clovis/Documentos/datascience-gads/usage/logger.json preprocess-zarp --prep-performance
```
10. Atualizar dados de performance no Superset (apenas na sexta feira)
	arquivo RAC : s3://cinnecta-datascience/ciass/datascience-gads/performance/RAC/historical/performance.csv	
		arquivo ZARP : s3://cinnecta-datascience/ciass/datascience-gads/performance/ZARP/historical/performance.csv
	
	acessar http://35.208.236.83:8080/login/ e colocar suas credenciais
	ir em + > dados > upload CSV
	a table name gads_zarp inserir o arquivo de performance ZARP, mandar sobrescrever o existente (table exists = replace) e adicionar Date,ref_date como parse dates
	a mesma coisa para 
	
## Download Automático do XLSX da Zarp
Os dados estão sendo disponibilizados diariamente no seguinte link (necessario ter autorização): https://docs.google.com/spreadsheets/d/1xiGHvcr41PUhL1aSzET_aX-Wxmzz92QJny0xsdwdEdY/edit#gid=0
	
O pacote gsheets (https://pypi.org/project/gsheets/)
consegue fazer a extração de uma planilha no google drive, para isso é necessário a existência de um client_secret.json e um arquivo chamado storage.json (estes arquivos se encontram em arquivos_conf/ no bucket)
No airflow o arquivo storage.json deve ser adicionado manualmente em /home/ubuntu
    
### PROBLEMA DE VERSÃO
Pode acontecer erros de versionamento. Como no exemplo abaixo.

![](https://hackmd.io/_uploads/S17Y4xvE2.png)
    
Nesse caso, você deve apagar o pacote google-ads do pyproject.yaml e dar um poetry add google-ads. Ele vai instalar o pacote mais novo, daí a versão deve ser alterada dentro do código para a mais atual. basta alterar o version sempre que aparecer a seguinte linha nos códigos:
`client = GoogleAdsClient.load_from_storage(self.path_yaml, version="v13")`
A mais atual é a 13