Skip to content

Commit

Permalink
Regra viagens sem transação (#121)
Browse files Browse the repository at this point in the history
* cria modelo viagem_km_tipo

* altera viagens_remuneradas

* altera schema dashboard_subsidio_sppo

* altera data dbt

* cria modelo viagem_transacao

* adiciona dataset subsidio e variavel DATA_SUBSIDIO_V8_INICIO no dbt_project

* altera modelos dashboard_subsidio_sppo

* altera schema dashboard_subsidio_sppo

* altera coluna datetime_partida_bilhetagem

* adiciona schema subsidio

* adiciona km_apurada_sem_transacao no teste_sumario_servico_dia_tipo_soma_km

* altera changelogs

* altera materialized e adiciona incremental_strategy no subsidio

* Altera docs e schema subsidio

* remove comentário no select final

* remove comentários

* altera DATA_SUBSIDIO_V8_INICIO

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
akaBotelho and mergify[bot] authored Aug 7, 2024
1 parent 740bfe4 commit 4590382
Show file tree
Hide file tree
Showing 12 changed files with 310 additions and 99 deletions.
6 changes: 6 additions & 0 deletions pipelines/migration/projeto_subsidio_sppo/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog - projeto_subsidio_sppo

## [1.0.2] - 2024-07-31

### Adicionado

- Adiciona `km_apurada_sem_transacao` na soma da constante `SUBSIDIO_SPPO_DATA_CHECKS_PARAMS.teste_sumario_servico_dia_tipo_soma_km` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/121)

## [1.0.1] - 2024-07-17

### Alterado
Expand Down
2 changes: 1 addition & 1 deletion pipelines/migration/projeto_subsidio_sppo/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ class constants(Enum): # pylint: disable=c0103
SELECT
* EXCEPT(km_apurada),
km_apurada,
ROUND(COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_n_licenciado,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_n_vistoriado, 0),2) AS km_apurada2
ROUND(COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_n_licenciado,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_n_vistoriado, 0) + COALESCE(km_apurada_sem_transacao, 0),2) AS km_apurada2
FROM
`rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_tipo`
WHERE
Expand Down
2 changes: 1 addition & 1 deletion pipelines/migration/projeto_subsidio_sppo/flows.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""
Flows for projeto_subsidio_sppo
DBT 2024-07-02
DBT 2024-07-24
"""

from prefect import Parameter, case, task
Expand Down
8 changes: 7 additions & 1 deletion queries/dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,8 @@ vars:
DATA_SUBSIDIO_V6_INICIO: "2024-04-01"
# Feature Apuração Madonna · The Celebration Tour in Rio
DATA_SUBSIDIO_V7_INICIO: "2024-05-01"
# Feature Viagens sem transação
DATA_SUBSIDIO_V8_INICIO: "2024-07-19"
# valor_subsidio: "`rj-smtr-dev.projeto_subsidio_sppo.valor_subsidio`"

# Recursos #
Expand Down Expand Up @@ -286,6 +288,10 @@ models:
staging:
+materialized: incremental
+schema: validacao_dados_jae_staging
subsidio:
+materialized: incremental
+incremental_strategy: insert_overwrite
+schema: subsidio
catalogo:
+materialized: view
+schema: catalogo
+schema: catalogo
13 changes: 13 additions & 0 deletions queries/models/dashboard_subsidio_sppo/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
# Changelog - dashboard_subsidio_sppo

## [7.0.0] - 2024-07-31

### Alterado

- Refatora tabelas `viagens_remuneradas.sql` e
`sumario_servico_dia_tipo.sql` para uso da nova tabela de
referência (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/121)
- Adiciona novo tipo de viagem `"Sem transação"` nas tabelas
`viagens_remuneradas.sql`,
`sumario_servico_dia_tipo.sql`,
`sumario_servico_dia_tipo_sem_glosa.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/121)

## [6.0.0] - 2024-04-18

### Alterado

- Adiciona novo filtro no modelo `sumario_servico_dia_historico.sql` em razão de alterações no modelo `viagem_planejada.sql` (https://github.com/prefeitura-rio/queries-rj-smtr/pull/261)

## [5.0.0] - 2024-03-30

### Adicionado
Expand Down
38 changes: 10 additions & 28 deletions queries/models/dashboard_subsidio_sppo/sumario_servico_dia_tipo.sql
Original file line number Diff line number Diff line change
Expand Up @@ -26,31 +26,17 @@ WITH
AND (distancia_total_planejada > 0
OR distancia_total_planejada IS NOT NULL)
),
veiculos AS (
SELECT
DATA,
id_veiculo,
status
FROM
-- rj-smtr.veiculo.sppo_veiculo_dia
{{ ref("sppo_veiculo_dia") }}
WHERE
DATA >= DATE( "{{ var("DATA_SUBSIDIO_V2_INICIO") }}" )
{% if is_incremental() %}
AND DATA BETWEEN DATE("{{ var("start_date") }}" )
AND DATE( "{{ var("end_date") }}" )
{% endif %}
),
viagem AS (
SELECT
DATA,
servico_realizado AS servico,
data,
servico,
id_veiculo,
id_viagem,
tipo_viagem,
distancia_planejada
FROM
-- rj-smtr.projeto_subsidio_sppo.viagem_completa
{{ ref("viagem_completa") }}
-- rj-smtr.subsidio.viagem_transacao
{{ ref("viagem_transacao") }}
WHERE
DATA >= DATE( "{{ var("DATA_SUBSIDIO_V2_INICIO") }}" )
{% if is_incremental() %}
Expand All @@ -60,18 +46,13 @@ WITH
),
servico_km_tipo AS (
SELECT
v.DATA,
v.servico,
ve.status AS tipo_viagem,
data,
servico,
tipo_viagem,
COUNT(id_viagem) AS viagens,
ROUND(SUM(distancia_planejada), 2) AS km_apurada
FROM
viagem v
LEFT JOIN
veiculos ve
ON
ve.data = v.data
AND ve.id_veiculo = v.id_veiculo
GROUP BY
1,
2,
Expand Down Expand Up @@ -127,7 +108,8 @@ WITH
"Autuado por limpeza/equipamento" AS autuado_limpezaequipamento,
"Licenciado sem ar e não autuado" AS licenciado_sem_ar_n_autuado,
"Licenciado com ar e não autuado" AS licenciado_com_ar_n_autuado,
"Não vistoriado" AS n_vistoriado
"Não vistoriado" AS n_vistoriado,
"Sem transação" AS sem_transacao
)))
SELECT
sd.*,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ SELECT
perc_km_planejada AS perc_distancia_total_subsidio,
-- Valor total sem glosas: quando existe subsidio (POD>80%), adiciona o valor glosado por tipo de viagem ao total
CASE
WHEN perc_km_planejada >= 80 THEN ROUND(COALESCE(valor_subsidio_pago, 0) + COALESCE(km_apurada_registrado_com_ar_inoperante * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_autuado_ar_inoperante * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_autuado_seguranca * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_autuado_limpezaequipamento * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado * (subsidio_km_sem_glosa - subsidio_km_sem_ar_n_autuado), 0) + COALESCE(km_apurada_n_vistoriado * subsidio_km_sem_glosa, 0), 2)
WHEN perc_km_planejada >= 80 THEN ROUND(COALESCE(valor_subsidio_pago, 0) + COALESCE(km_apurada_registrado_com_ar_inoperante * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_autuado_ar_inoperante * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_autuado_seguranca * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_autuado_limpezaequipamento * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado * (subsidio_km_sem_glosa - subsidio_km_sem_ar_n_autuado), 0) + COALESCE(km_apurada_n_vistoriado * subsidio_km_sem_glosa, 0) + COALESCE(km_apurada_sem_transacao * subsidio_km_sem_glosa, 0), 2)
ELSE
0
END
Expand All @@ -46,6 +46,8 @@ END
COALESCE(km_apurada_registrado_com_ar_inoperante, 0) AS km_apurada_registrado_com_ar_inoperante,
COALESCE(viagens_n_vistoriado, 0) AS viagens_n_vistoriado,
COALESCE(km_apurada_n_vistoriado, 0) AS km_apurada_n_vistoriado,
COALESCE(viagens_sem_transacao, 0) AS viagens_sem_transacao,
COALESCE(km_apurada_sem_transacao, 0) AS km_apurada_sem_transacao
FROM
{{ ref("sumario_servico_dia_tipo") }} -- `rj-smtr`.`dashboard_subsidio_sppo`.`sumario_servico_dia_tipo`
LEFT JOIN
Expand Down
114 changes: 49 additions & 65 deletions queries/models/dashboard_subsidio_sppo/viagens_remuneradas.sql
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ WITH
COALESCE(feed_start_date, data_versao_trips, data_versao_shapes, data_versao_frequencies) AS feed_start_date
FROM
{{ ref("subsidio_data_versao_efetiva") }}
-- rj-smtr.projeto_subsidio_sppo.subsidio_data_versao_efetiva (alterar também query no bloco execute)
-- rj-smtr.projeto_subsidio_sppo.subsidio_data_versao_efetiva -- (alterar também query no bloco execute)
WHERE
data BETWEEN DATE("{{ var("start_date") }}")
AND DATE( "{{ var("end_date") }}" )
Expand All @@ -82,64 +82,46 @@ WITH
AND (d.tipo_os = v.tipo_os
OR (d.tipo_os IS NULL AND v.tipo_os = "Regular"))
),
-- 2. Viagens realizadas
viagem AS (
SELECT
data,
servico_realizado AS servico,
id_veiculo,
id_viagem,
distancia_planejada
FROM
{{ ref("viagem_completa") }}
-- rj-smtr.projeto_subsidio_sppo.viagem_completa
WHERE
data BETWEEN DATE("{{ var("start_date") }}")
AND DATE( "{{ var("end_date") }}" ) ),
-- 3. Status dos veículos
veiculos AS (
SELECT
data,
id_veiculo,
status
FROM
{{ ref("sppo_veiculo_dia") }}
-- rj-smtr.veiculo.sppo_veiculo_dia
WHERE
data BETWEEN DATE("{{ var("start_date") }}")
AND DATE("{{ var("end_date") }}") ),
-- 4. Parâmetros de subsídio
-- 2. Parâmetros de subsídio
subsidio_parametros AS (
SELECT
DISTINCT data_inicio,
data_fim,
status,
subsidio_km
FROM
{{ ref("subsidio_valor_km_tipo_viagem") }} ),
-- 5. Viagens com tipo e valor de subsídio por km
{{ ref("subsidio_valor_km_tipo_viagem") }}
-- rj-smtr-staging.dashboard_subsidio_sppo_staging.subsidio_valor_km_tipo_viagem
),
-- 3. Viagens com quantidades de transações
viagem_transacao AS (
SELECT
*
FROM
{{ ref("viagem_transacao") }}
-- rj-smtr.subsidio.viagem_transacao
WHERE
data BETWEEN DATE("{{ var("start_date") }}")
AND DATE( "{{ var("end_date") }}" )
),
-- 4. Viagens com tipo e valor de subsídio por km
viagem_km_tipo AS (
SELECT
v.data,
v.servico,
ve.status AS tipo_viagem,
id_viagem,
distancia_planejada,
vt.data,
vt.servico,
vt.tipo_viagem,
vt.id_viagem,
vt.distancia_planejada,
t.subsidio_km
FROM
viagem AS v
LEFT JOIN
veiculos AS ve
USING
(data,
id_veiculo)
viagem_transacao AS vt
LEFT JOIN
subsidio_parametros AS t
ON
v.data BETWEEN t.data_inicio
AND t.data_fim
AND ve.status = t.status ),
-- 6. Apuração de km realizado e Percentual de Operação Diário (POD)
vt.data BETWEEN t.data_inicio AND t.data_fim
AND vt.tipo_viagem = t.status
),
-- 5. Apuração de km realizado e Percentual de Operação Diário (POD)
servico_km_apuracao AS (
SELECT
p.data,
Expand All @@ -163,31 +145,33 @@ WITH
3,
4,
5 )
-- 7. Flag de viagens que serão consideradas ou não para fins de remuneração (apuração de valor de subsídio) - RESOLUÇÃO SMTR Nº 3645/2023
-- 6. Flag de viagens que serão consideradas ou não para fins de remuneração (apuração de valor de subsídio) - RESOLUÇÃO SMTR Nº 3645/2023
SELECT
v.* EXCEPT(rn),
CASE
v.* EXCEPT(rn),
CASE
WHEN v.tipo_viagem = "Sem transação"
THEN FALSE
WHEN data >= "2023-09-16"
AND p.tipo_dia = "Dia Útil"
AND viagens_planejadas > 10
AND perc_km_planejada > 120
AND rn > viagens_planejadas_ida_volta*1.2
THEN FALSE
AND p.tipo_dia = "Dia Útil"
AND viagens_planejadas > 10
AND perc_km_planejada > 120
AND rn > viagens_planejadas_ida_volta*1.2
THEN FALSE
WHEN data >= "2023-09-16"
AND p.tipo_dia = "Dia Útil"
AND viagens_planejadas <= 10
AND perc_km_planejada > 200
AND rn > viagens_planejadas_ida_volta*2
THEN FALSE
AND p.tipo_dia = "Dia Útil"
AND viagens_planejadas <= 10
AND perc_km_planejada > 200
AND rn > viagens_planejadas_ida_volta*2
THEN FALSE
WHEN data >= "2023-09-16"
AND (p.tipo_dia = "Dia Útil"
AND (viagens_planejadas IS NULL
OR perc_km_planejada IS NULL
OR rn IS NULL
OR viagens_planejadas_ida_volta IS NULL
)
AND (p.tipo_dia = "Dia Útil"
AND (viagens_planejadas IS NULL
OR perc_km_planejada IS NULL
OR rn IS NULL
OR viagens_planejadas_ida_volta IS NULL
)
THEN NULL
)
THEN NULL
ELSE
TRUE
END AS indicador_viagem_remunerada
Expand Down
36 changes: 34 additions & 2 deletions queries/models/docs.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
{% docs consorcio %}
Consórcio ao qual o serviço pertence
Consórcio ao qual o serviço pertence.
{% enddocs %}

{% docs id_veiculo %}
Código identificador do veículo (número de ordem).
{% enddocs %}

{% docs datetime_ultima_atualizacao %}
Última atualização (GMT-3).
{% enddocs %}

{% docs datetime_partida %}
Horário de início da viagem.
{% enddocs %}

{% docs datetime_chegada %}
Horário de fim da viagem.
{% enddocs %}

{% docs distancia_planejada %}
Distância do shape (trajeto) planejado (km).
{% enddocs %}

{% docs tipo_viagem_status %}
Classificação do tipo de viagem.
{% enddocs %}

{% docs servico %}
Serviço realizado pelo veículo.
{% enddocs %}

{% docs id_viagem %}
Código único identificador da viagem.
{% enddocs %}

{% docs project_id %}
Expand All @@ -24,4 +56,4 @@ Tipo de dado da coluna

{% docs metadado_descricao %}
Descrição da coluna
{% enddocs %}
{% enddocs %}
7 changes: 7 additions & 0 deletions queries/models/subsidio/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Changelog - subsidio

## [1.0.0] - 2024-07-31

### Adicionado

- Cria modelo `viagem_transacao.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/121)
Loading

0 comments on commit 4590382

Please sign in to comment.