diff --git a/queries/macros/custom_get_where_subquery.sql b/queries/macros/custom_get_where_subquery.sql index 03a368448..95099f9ee 100644 --- a/queries/macros/custom_get_where_subquery.sql +++ b/queries/macros/custom_get_where_subquery.sql @@ -12,7 +12,7 @@ {% set where = where | replace("__date_range_end__", date_range_end) %} {% endif %} {%- set filtered -%} - (select * from {{ relation }} where {{ where }}) dbt_subquery + (select * from {{ relation }} where {{ where }}) {%- endset -%} {% do return(filtered) %} {%- else -%} diff --git a/queries/macros/test_accepted_values_valor_penalidade.sql b/queries/macros/test_accepted_values_valor_penalidade.sql index 7d5daa930..922a40477 100644 --- a/queries/macros/test_accepted_values_valor_penalidade.sql +++ b/queries/macros/test_accepted_values_valor_penalidade.sql @@ -1,16 +1,17 @@ -{% test accepted_values_valor_penalidade(model) -%} +{% test accepted_values_in_table(model, column_name, ref_table, ref_column) %} WITH all_values AS ( SELECT - DISTINCT valor_penalidade AS value_field, + DISTINCT {{ column_name }} AS value_field, COUNT(*) AS n_records FROM {{ model }} WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") + DATA BETWEEN DATE("{{ var('date_range_start') }}") + AND DATE("{{ var('date_range_end') }}") GROUP BY - valor_penalidade ) + {{ column_name }} + ) SELECT * FROM @@ -18,9 +19,8 @@ WITH WHERE value_field NOT IN ( SELECT - valor + {{ ref_column }} FROM - -- `rj-smtr`.`dashboard_subsidio_sppo`.`valor_tipo_penalidade` - {{ ref('valor_tipo_penalidade') }} - ) + {{ ref(ref_table) }} + ) {%- endtest %} \ No newline at end of file diff --git a/queries/macros/test_check_gps_capture.sql b/queries/macros/test_check_gps_capture.sql index 252c4e7e7..848512292 100644 --- a/queries/macros/test_check_gps_capture.sql +++ b/queries/macros/test_check_gps_capture.sql @@ -5,9 +5,9 @@ WITH SELECT DATETIME(timestamp_array) AS timestamp_array FROM - UNNEST( GENERATE_TIMESTAMP_ARRAY( TIMESTAMP("{{ var('start_date') }}"), TIMESTAMP("{{ var('end_date') }}"), INTERVAL {{ interval }} minute) ) AS timestamp_array + UNNEST( GENERATE_TIMESTAMP_ARRAY( TIMESTAMP("{{ var('date_range_start') }}"), TIMESTAMP("{{ var('date_range_end') }}"), INTERVAL {{ interval }} minute) ) AS timestamp_array WHERE - timestamp_array < TIMESTAMP("{{ var('end_date') }}") ), + timestamp_array < TIMESTAMP("{{ var('date_range_end') }}") ), logs_table AS ( SELECT SAFE_CAST(DATETIME(TIMESTAMP(timestamp_captura), "America/Sao_Paulo") AS DATETIME) timestamp_captura, @@ -15,7 +15,7 @@ WITH SAFE_CAST(erro AS STRING) erro, SAFE_CAST(DATA AS DATE) DATA FROM - rj-smtr-staging.{{model.schema}}_staging.{{ table_id }}_logs AS t ), + rj-smtr-staging.br_rj_riodejaneiro_onibus_gps_staging.{{ table_id }}_logs AS t ), logs AS ( SELECT *, @@ -23,10 +23,10 @@ WITH FROM logs_table WHERE - DATA BETWEEN DATE(TIMESTAMP("{{ var('start_date') }}")) - AND DATE(TIMESTAMP("{{ var('end_date') }}")) - AND timestamp_captura BETWEEN "{{ var('start_date') }}" - AND "{{ var('end_date') }}" ) + DATA BETWEEN DATE(TIMESTAMP("{{ var('date_range_start') }}")) + AND DATE(TIMESTAMP("{{ var('date_range_end') }}")) + AND timestamp_captura BETWEEN "{{ var('date_range_start') }}" + AND "{{ var('date_range_end') }}" ) SELECT COALESCE(logs.timestamp_captura, t.timestamp_array) AS timestamp_captura, logs.erro diff --git a/queries/macros/test_check_gps_treatment.sql b/queries/macros/test_check_gps_treatment.sql index ac22a7679..91502ce17 100644 --- a/queries/macros/test_check_gps_treatment.sql +++ b/queries/macros/test_check_gps_treatment.sql @@ -1,4 +1,4 @@ -start_date{% test check_gps_treatment(model) -%} +{% test check_gps_treatment(model) -%} WITH data_hora AS ( SELECT @@ -9,7 +9,7 @@ WITH FROM timestamp_array) AS hora, FROM - UNNEST(GENERATE_TIMESTAMP_ARRAY("{{ var('start_date') }}", "{{ var('end_date') }}", INTERVAL 1 hour)) AS timestamp_array ), + UNNEST(GENERATE_TIMESTAMP_ARRAY("{{ var('date_range_start') }}", "{{ var('date_range_end') }}", INTERVAL 1 hour)) AS timestamp_array ), gps_raw AS ( SELECT EXTRACT(date @@ -23,8 +23,8 @@ WITH -- `rj-smtr.br_rj_riodejaneiro_onibus_gps.sppo_registros` {{ ref('sppo_registros') }} WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") + DATA BETWEEN DATE("{{ var('date_range_start') }}") + AND DATE("{{ var('date_range_end') }}") GROUP BY 1, 2 ), @@ -41,8 +41,8 @@ WITH -- `rj-smtr.br_rj_riodejaneiro_onibus_gps.sppo_aux_registros_filtrada` {{ ref('sppo_aux_registros_filtrada') }} WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") + DATA BETWEEN DATE("{{ var('date_range_start') }}") + AND DATE("{{ var('date_range_end') }}") GROUP BY 1, 2 ), @@ -57,8 +57,8 @@ WITH -- `rj-smtr.br_rj_riodejaneiro_veiculos.gps_sppo` {{ ref('gps_sppo') }} WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") + DATA BETWEEN DATE("{{ var('date_range_start') }}") + AND DATE("{{ var('date_range_end') }}") GROUP BY 1, 2), diff --git a/queries/macros/test_check_sppo_veiculo_dia.sql b/queries/macros/test_check_sppo_veiculo_dia.sql index 23367a54d..518c362fc 100644 --- a/queries/macros/test_check_sppo_veiculo_dia.sql +++ b/queries/macros/test_check_sppo_veiculo_dia.sql @@ -1,79 +1,21 @@ {% test check_sppo_veiculo_dia(model) %} -WITH - count_dist_status AS ( + WITH + count_dist_status AS ( + SELECT + DATA, + COUNT(DISTINCT status) AS q_dist_status, + FROM + -- rj-smtr.veiculo.sppo_veiculo_dia + {{ ref('sppo_veiculo_dia')}} + WHERE + DATA BETWEEN DATE("{{ var('date_range_start') }}") + AND DATE("{{ var('end_date') }}") + GROUP BY + 1 + HAVING + COUNT(DISTINCT status) = 1 ) SELECT - DATA, - COUNT(DISTINCT status) AS q_dist_status, - NULL AS q_duplicated_status, - NULL AS q_null_status + * FROM - -- rj-smtr.veiculo.sppo_veiculo_dia - {{ ref('sppo_veiculo_dia')}} - WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") - GROUP BY - 1 - HAVING - COUNT(DISTINCT status) = 1 ), - count_duplicated_status AS ( - SELECT - DATA, - id_veiculo, - COUNT(*) AS q_status, - FROM - -- rj-smtr.veiculo.sppo_veiculo_dia - {{ ref('sppo_veiculo_dia')}} - WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") - GROUP BY - 1, - 2 - HAVING - COUNT(*) > 1 ), - count_duplicated_status_agg AS ( - SELECT - DATA, - NULL AS q_dist_status, - SUM(q_status) AS q_duplicated_status, - NULL AS q_null_status - FROM - count_duplicated_status - GROUP BY - 1), - count_null_status AS ( - SELECT - DATA, - NULL AS q_dist_status, - NULL AS q_duplicated_status, - COUNT(*) AS q_null_status - FROM - -- rj-smtr.veiculo.sppo_veiculo_dia - {{ ref('sppo_veiculo_dia')}} - WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") - AND status IS NULL - GROUP BY - 1 ) -SELECT - * -FROM - count_dist_status - -UNION ALL - -SELECT - * -FROM - count_duplicated_status_agg - -UNION ALL - -SELECT - * -FROM - count_null_status - + count_dist_status {% endtest %} \ No newline at end of file diff --git a/queries/macros/test_check_trips_processing.sql b/queries/macros/test_check_trips_processing.sql index a97af6e5b..d61364ea4 100644 --- a/queries/macros/test_check_trips_processing.sql +++ b/queries/macros/test_check_trips_processing.sql @@ -1,4 +1,4 @@ -start_date{% test check_trips_processing(model) -%} +{% test check_trips_processing(model) -%} SELECT s.data, s.tipo_dia, @@ -13,7 +13,7 @@ FROM ( FROM rj-smtr.projeto_subsidio_sppo.subsidio_data_versao_efetiva WHERE - DATA >= "2024-04-01" -- DATA_SUBSIDIO_V6_INICIO (Feature trajetos alternativos) + DATA >= "{{ var('DATA_SUBSIDIO_V6_INICIO') }}" AND DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") ) AS s diff --git a/queries/macros/test_check_viagem_completa.sql b/queries/macros/test_check_viagem_completa.sql index 863499ec7..41bd10e63 100644 --- a/queries/macros/test_check_viagem_completa.sql +++ b/queries/macros/test_check_viagem_completa.sql @@ -7,7 +7,7 @@ WITH -- rj-smtr.projeto_subsidio_sppo.subsidio_data_versao_efetiva {{ ref('subsidio_data_versao_efetiva') }} WHERE - DATA >= "2024-04-01" + DATA >= "{{ var('DATA_SUBSIDIO_V6_INICIO') }}" AND DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}")), viagem_completa AS ( @@ -17,7 +17,7 @@ WITH -- rj-smtr.projeto_subsidio_sppo.viagem_completa {{ ref('viagem_completa') }} WHERE - DATA >= "2024-04-01" + DATA >= "{{ var('DATA_SUBSIDIO_V6_INICIO') }}" AND DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}")), feed_info AS ( diff --git a/queries/macros/test_completude.sql b/queries/macros/test_completude.sql index 659021643..478d0b940 100644 --- a/queries/macros/test_completude.sql +++ b/queries/macros/test_completude.sql @@ -1,10 +1,10 @@ -{% test completude(model) -%} +{% test completude(model, table_id) -%} WITH time_array AS ( SELECT * FROM - UNNEST(GENERATE_DATE_ARRAY(DATE("{{ var('start_date') }}"), DATE("{{ var('end_date') }}"))) AS DATA ), + UNNEST(GENERATE_DATE_ARRAY(DATE("{{ var('date_range_start') }}"), DATE("{{ var('date_range_end') }}"))) AS DATA ), {{ model.name }} AS ( SELECT DATA, @@ -12,8 +12,8 @@ WITH FROM {{ model }} WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") + DATA BETWEEN DATE("{{ var('date_range_start') }}") + AND DATE("{{ var('date_range_end') }}") GROUP BY 1 ) SELECT diff --git a/queries/macros/test_expression_is_true.sql b/queries/macros/test_expression_is_true.sql deleted file mode 100644 index 77b2a6256..000000000 --- a/queries/macros/test_expression_is_true.sql +++ /dev/null @@ -1,10 +0,0 @@ -{% test expression_is_true(model, expression) -%} -SELECT - * -FROM - {{ model }} -WHERE - (DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}")) - AND NOT({{ expression }}) -{%- endtest %} \ No newline at end of file diff --git a/queries/macros/test_subsido_viagens_atualizadas.sql b/queries/macros/test_subsido_viagens_atualizadas.sql index 79be946c3..d8cc52991 100644 --- a/queries/macros/test_subsido_viagens_atualizadas.sql +++ b/queries/macros/test_subsido_viagens_atualizadas.sql @@ -8,7 +8,7 @@ WITH -- rj-smtr.projeto_subsidio_sppo.viagem_completa {{ ref('viagem_completa') }} WHERE - DATA >= "2024-04-01" + DATA >= "{{ var('DATA_SUBSIDIO_V6_INICIO') }}" AND DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}")), sumario_servico_dia_historico AS ( diff --git a/queries/macros/test_teto_pagamento_valor_subsidio_pago.sql b/queries/macros/test_teto_pagamento_valor_subsidio_pago.sql index aaeb75e49..79c5155af 100644 --- a/queries/macros/test_teto_pagamento_valor_subsidio_pago.sql +++ b/queries/macros/test_teto_pagamento_valor_subsidio_pago.sql @@ -1,21 +1,21 @@ -{% test teto_pagamento_valor_subsidio_pago(model, expression) -%} +{% test teto_pagamento_valor_subsidio_pago(model, table_id, schema, expression) -%} WITH -{{ model.name }} AS ( +{{ table_id }} AS ( SELECT - * + *, FROM {{ model }} WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}")), + DATA BETWEEN DATE("{{ var('date_range_start') }}") + AND DATE("{{ var('date_range_end') }}")), subsidio_valor_km_tipo_viagem AS ( SELECT data_inicio, data_fim, MAX(subsidio_km) AS subsidio_km_teto FROM - `rj-smtr`.`dashboard_subsidio_sppo_staging`.`subsidio_valor_km_tipo_viagem` - -- {{ ref('subsidio_valor_km_tipo_viagem') }} + -- `rj-smtr`.`dashboard_subsidio_sppo_staging`.`subsidio_valor_km_tipo_viagem` + {{ ref('subsidio_valor_km_tipo_viagem') }} WHERE subsidio_km > 0 GROUP BY @@ -24,7 +24,7 @@ subsidio_valor_km_tipo_viagem AS ( SELECT * FROM - {{ model.name }} AS s + {{ table_id }} AS s LEFT JOIN subsidio_valor_km_tipo_viagem AS p ON diff --git a/queries/macros/test_unique_combination.sql b/queries/macros/test_unique_combination.sql deleted file mode 100644 index 1a229c844..000000000 --- a/queries/macros/test_unique_combination.sql +++ /dev/null @@ -1,13 +0,0 @@ -{% test unique_combination(model, expression) -%} -SELECT - {{expression}} -FROM - {{ model }} -WHERE - DATA BETWEEN DATE("{{ var('start_date') }}") - AND DATE("{{ var('end_date') }}") -GROUP BY - {{expression}} -HAVING - COUNT(*) > 1 -{%- endtest %} \ No newline at end of file diff --git a/queries/models/br_rj_riodejaneiro_onibus_gps/schema.yaml b/queries/models/br_rj_riodejaneiro_onibus_gps/schema.yaml index 9e5133431..6e21d741a 100644 --- a/queries/models/br_rj_riodejaneiro_onibus_gps/schema.yaml +++ b/queries/models/br_rj_riodejaneiro_onibus_gps/schema.yaml @@ -241,6 +241,7 @@ models: - check_gps_capture: table_id: realocacao interval: 10 + name: check_gps_capture__sppo_realocacao columns: - name: id_veiculo description: "Código identificador do veículo (número de ordem)" @@ -292,6 +293,7 @@ models: - check_gps_capture: table_id: registros interval: 1 + name: check_gps_capture__sppo_registros columns: - name: ordem description: "Código identificador do veículo (número de ordem)" diff --git a/queries/models/br_rj_riodejaneiro_veiculos/schema.yaml b/queries/models/br_rj_riodejaneiro_veiculos/schema.yaml index f51816b6c..bbfa72d33 100644 --- a/queries/models/br_rj_riodejaneiro_veiculos/schema.yaml +++ b/queries/models/br_rj_riodejaneiro_veiculos/schema.yaml @@ -45,7 +45,8 @@ models: - name: gps_sppo description: "Tabela com os dados tratados de registros de GPS do SPPO, incluindo velocidade estimada, estado de movimento, parada em terminal ou garagem e interseção com o traçado da linha informada." tests: - - check_gps_treatment + - check_gps_treatment: + name: check_gps_treatment__gps_sppo - dbt_utils.unique_combination_of_columns: name: unique_columns__gps_sppo combination_of_columns: diff --git a/queries/models/dashboard_subsidio_sppo/schema.yml b/queries/models/dashboard_subsidio_sppo/schema.yml index 4f65bc0f5..89d565113 100644 --- a/queries/models/dashboard_subsidio_sppo/schema.yml +++ b/queries/models/dashboard_subsidio_sppo/schema.yml @@ -4,110 +4,97 @@ models: - name: sumario_servico_dia description: "Sumário do subsídio dos serviços de ônibus (SPPO) por dia" tests: - - completude - - accepted_values_valor_penalidade + - dbt_expectations.expect_row_values_to_have_data_for_every_n_datepart: + date_col: data + row_condition: "data is not null" # (Optional) + test_start_date: "{{ var('date_range_start') }}" # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + test_end_date: "{{ var('date_range_end') }}" # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + name: completude__sumario_servico_dia - teto_pagamento_valor_subsidio_pago: + table_id: sumario_servico_dia expression: ROUND(valor_subsidio_pago/subsidio_km_teto,2) <= ROUND(km_apurada+0.01,2) + name: teto_pagamento_valor_subsidio_pago__sumario_servico_dia - dbt_utils.unique_combination_of_columns: combination_of_columns: - data - servico - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: unique_combination__data_servico__sumario_servico_dia columns: - name: data description: "Data de emissão do sinal de GPS" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__data__sumario_servico_dia - name: tipo_dia description: "Dia da semana considerado para o cálculo da distância planejada - categorias: Dia Útil, Sabado, Domingo" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__tipo_dia__sumario_servico_dia - name: consorcio description: "Consórcio que opera o serviço" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__consorcio__sumario_servico_dia - name: servico description: "Serviço realizado pelo veículo" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__servico__sumario_servico_dia - name: viagens description: "Quantidade de viagens apuradas" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens__sumario_servico_dia - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens__sumario_servico_dia - name: km_apurada description: "Distância apurada do serviço (km)\n Distância planejada da viagem multiplicada pela quantidade de viagens" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada__sumario_servico_dia - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada__sumario_servico_dia - name: km_planejada description: "Distância planejada para o serviço (km)" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_planejada__sumario_servico_dia - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_planejada__sumario_servico_dia - name: perc_km_planejada description: "Indicador percentual de quilometragem apurada em relação à planejada da linha" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__perc_km_planejada__sumario_servico_dia - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__perc_km_planejada__sumario_servico_dia - name: valor_subsidio_pago description: "Valor de subsídio apurado (R$)\n Distância apurada do serviço multiplicada pelos respectivos valores pela classificação do veículo" tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__valor_subsidio_pago__sumario_servico_dia - name: valor_penalidade description: "Valor de penalidade apurado (R$)\n Linha com operação entre 40% e 60% da quilometragem estipulada - penalidade equivalente a uma infração média prevista no Código Disciplinar do Serviço Público de Transporte de Passageiros por Meio de Ônibus do Município do Rio de Janeiro - SPPO.\n Linha com operação inferior a 40% da quilometragem estipulada - penalidade equivalente a uma infração grave prevista no Código Disciplinar do Serviço Público de Transporte de Passageiros por Meio de Ônibus do Município do Rio de Janeiro - SPPO." + tests: + - accepted_values_in_table: + ref_column: valor + ref_table: valor_tipo_penalidade + name: accepted_values__valor_penalidade__sumario_servico_dia_pagamento - name: sumario_servico_dia_historico description: "Sumário histórico do subsídio dos serviços de ônibus (SPPO) por dia" tests: - - subsidio_viagens_atualizadas + - subsidio_viagens_atualizadas: + name: subsidio_viagens_atualizadas__sumario_servico_dia_historico columns: - name: data description: "Data de emissão do sinal de GPS" @@ -203,7 +190,8 @@ models: description: "Distância apurada do serviço (km) Distância planejada da viagem multiplicada pela quantidade de viagens." tests: - - sumario_servico_dia_tipo_soma_km + - sumario_servico_dia_tipo_soma_km: + name: soma_km__km_apurada__sumario_servico_dia_tipo - name: km_planejada description: "Distância planejada para o serviço (km)." - name: perc_km_planejada @@ -375,330 +363,261 @@ models: - name: sumario_servico_dia_tipo_sem_glosa description: "Tabela temporária sem as glosas e com os detalhes de viagens subsidiadas por serviço-dia." tests: - - completude + - dbt_expectations.expect_row_values_to_have_data_for_every_n_datepart: + date_col: data + row_condition: "data is not null" # (Optional) + test_start_date: DATE("{{ var("start_date") }}") # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + test_end_date: DATE("{{ var("end_date") }}") # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + name: completude__sumario_servico_dia_tipo_sem_glosa - teto_pagamento_valor_subsidio_pago: + table_id: sumario_servico_dia_tipo_sem_glosa expression: ROUND(valor_total_subsidio/subsidio_km_teto,2) <= ROUND(distancia_total_subsidio+0.01,2) + name: teto_pagamento_valor_subsidio_pago__sumario_servico_dia_tipo_sem_glosa - dbt_utils.unique_combination_of_columns: combination_of_columns: - data - servico - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: unique_combination__data_servico__sumario_servico_dia_tipo_sem_glosa columns: - name: data description: "Data de emissão do sinal de GPS." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__data__sumario_servico_dia_tipo_sem_glosa - name: consorcio description: "Consórcio que opera o serviço." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__consorcio__sumario_servico_dia_tipo_sem_glosa - name: tipo_dia description: "Dia da semana considerado para o cálculo da distância planejada - categorias: Dia Útil, Sabado, Domingo." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__tipo_dia__sumario_servico_dia_tipo_sem_glosa - name: servico description: "Serviço realizado pelo veículo." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__servico__sumario_servico_dia_tipo_sem_glosa - name: viagens_subsidio description: "Quantidade de viagens apuradas." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_subsidio__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_subsidio__sumario_servico_dia_tipo_sem_glosa - name: distancia_total_planejada description: "Distância planejada para o serviço (km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__distancia_total_planejada__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__distancia_total_planejada__sumario_servico_dia_tipo_sem_glosa - name: distancia_total_subsidio description: "Distância apurada para o serviço (km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__distancia_total_subsidio__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__distancia_total_planejada__sumario_servico_dia_tipo_sem_glosa - name: valor_total_aferido description: "." - name: perc_distancia_total_subsidio description: "Indicador percentual de quilometragem apurada em relação à planejada da linha." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__perc_distancia_total_subsidio__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__perc_distancia_total_subsidio__sumario_servico_dia_tipo_sem_glosa - name: valor_total_subsidio description: "Valor da distância apurada multiplicada pelo subsídio por quilômetro (sem glosa). É zerado quando POD < 80%." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__valor_total_subsidio__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__valor_total_subsidio__sumario_servico_dia_tipo_sem_glosa - name: viagens_n_licenciado description: "Quantidade de viagens de veículos não licenciados." - name: km_apurada_n_licenciado description: "Quilometragem apurada de viagens de veículos não licenciados." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_n_licenciado__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_n_licenciado__sumario_servico_dia_tipo_sem_glosa - name: viagens_autuado_ar_inoperante description: "Quantidade de viagens de veículos autuados por ar inoperante." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_autuado_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_autuado_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - name: km_apurada_autuado_ar_inoperante description: "Quilometragem apurada de viagens de veículos autuados por ar inoperante." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_autuado_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_autuado_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - name: viagens_autuado_seguranca description: "Quantidade de viagens de veículos autuados por segurança." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_autuado_seguranca__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_autuado_seguranca__sumario_servico_dia_tipo_sem_glosa - name: km_apurada_autuado_seguranca description: "Quilometragem apurada de viagens de veículos autuados por segurança." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_autuado_seguranca__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_autuado_seguranca__sumario_servico_dia_tipo_sem_glosa - name: viagens_autuado_limpezaequipamento description: "Quantidade de viagens de veículos autuados por limpeza ou equipamento." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_autuado_limpezaequipamento__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_autuado_limpezaequipamento__sumario_servico_dia_tipo_sem_glosa - name: km_apurada_autuado_limpezaequipamento description: "Quilometragem apurada de viagens de veículos autuados por limpeza ou equipamento." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_autuado_limpezaequipamento__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_autuado_limpezaequipamento__sumario_servico_dia_tipo_sem_glosa - name: viagens_licenciado_sem_ar_n_autuado description: "Quantidade de viagens de veículos sem ar e não autuados." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_licenciado_sem_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_licenciado_sem_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - name: km_apurada_licenciado_sem_ar_n_autuado description: "Quilometragem apurada de viagens de veículos sem ar e não autuados." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_licenciado_sem_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_licenciado_sem_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - name: viagens_licenciado_com_ar_n_autuado description: "Quantidade de viagens de veículos com ar e não autuados." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_licenciado_com_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_licenciado_com_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - name: km_apurada_licenciado_com_ar_n_autuado description: "Quilometragem apurada de viagens de veículos com ar e não autuados." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_licenciado_com_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_licenciado_com_ar_n_autuado__sumario_servico_dia_tipo_sem_glosa - name: viagens_n_vistoriado description: "Quantidade de viagens apuradas realizadas por veículo não vistoriado tempestivamente conforme calendário de vistoria." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_n_vistoriado__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_n_vistoriado__sumario_servico_dia_tipo_sem_glosa - name: km_apurada_n_vistoriado description: "Distância apurada de viagens realizadas por veículo não vistoriado tempestivamente conforme calendário de vistoria (km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_n_vistoriado__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_n_vistoriado__sumario_servico_dia_tipo_sem_glosa - name: viagens_registrado_com_ar_inoperante description: "Quantidade de viagens apuradas realizadas por veículo licenciado com ar condicionado e registrado por agente de verão (RESOLUÇÃO SMTR Nº 3.682/2024) em razão de inoperância ou mau funcionamento deste." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_registrado_com_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__viagens_registrado_com_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - name: km_apurada_registrado_com_ar_inoperante description: "Distância apurada de viagens realizadas por veículo licenciado com ar condicionado e registrado por agente de verão (RESOLUÇÃO SMTR Nº 3.682/2024) em razão de inoperância ou mau funcionamento deste (km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_apurada_registrado_com_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__km_apurada_registrado_com_ar_inoperante__sumario_servico_dia_tipo_sem_glosa - name: viagens_remuneradas description: "Tabela com indicação de remuneração de viagens para fins de verificação de teto de pagamento conforme regra de 120%/200% (RESOLUÇÃO SMTR Nº 3.645/2023)" tests: - - dbt_utils.unique_combination_of_columns: - combination_of_columns: - - id_viagem - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") - - completude - - check_viagem_completa + # - dbt_utils.unique_combination_of_columns: + # combination_of_columns: + # - id_viagem + # name: unique_combination__id_viagem__viagens_remuneradas + - dbt_expectations.expect_row_values_to_have_data_for_every_n_datepart: + date_col: data + test_start_date: "{{ var('date_range_start') }}" # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + test_end_date: "{{ var('date_range_end') }}" # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + name: completude__viagens_remuneradas + - check_viagem_completa: + name: viagem_completa__viagens_remuneradas columns: - name: data description: "Data da viagem." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__data__viagens_remuneradas - name: servico description: "Serviço realizado pelo veículo." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__servico__viagens_remuneradas - name: tipo_viagem description: "Classificação do tipo de viagem." - name: id_viagem description: "Código único identificador da viagem." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__id_viagem__viagens_remuneradas - name: distancia_planejada description: "Distância planejada da viagem (km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__distancia_planejada__viagens_remuneradas - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__distancia_planejada__viagens_remuneradas - name: subsidio_km description: "Valor de subsídio, conforme tipo de viagem (R$/km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__subsidio_km__viagens_remuneradas - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: greater_than_zero__subsidio_km__viagens_remuneradas - name: subsidio_km_teto description: "Valor máximo de subsídio, conforme tipo de viagem (R$/km)." - name: indicador_viagem_dentro_limite description: "Indica se a viagem foi remunerada por estar abaixo do teto de 120%/200%." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") \ No newline at end of file + - not_null: + name: not_null__indicador_viagem_dentro_limite__viagens_remuneradas + + + \ No newline at end of file diff --git a/queries/models/dashboard_subsidio_sppo_v2/schema.yml b/queries/models/dashboard_subsidio_sppo_v2/schema.yml index bf66861b5..22da566e4 100644 --- a/queries/models/dashboard_subsidio_sppo_v2/schema.yml +++ b/queries/models/dashboard_subsidio_sppo_v2/schema.yml @@ -59,97 +59,80 @@ models: - name: sumario_servico_dia_pagamento description: "Sumário do subsídio dos serviços de ônibus (SPPO) por dia." tests: - - completude - - accepted_values_valor_penalidade + - dbt_expectations.expect_row_values_to_have_data_for_every_n_datepart: + date_col: data + test_start_date: "{{ var('date_range_start') }}" # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + test_end_date: "{{ var('date_range_end') }}" # (Optional. Replace 'yyyy-mm-dd' with a date. Default is 'None') + name: completude__sumario_servico_dia_pagamento - teto_pagamento_valor_subsidio_pago: + table_id: sumario_servico_dia_pagamento expression: ROUND((valor_a_pagar - valor_penalidade)/subsidio_km_teto,2) <= ROUND(km_apurada_dia+0.01,2) + name: teto_pagamento_valor_subsidio_pago__sumario_servico_dia_pagamento - dbt_utils.unique_combination_of_columns: combination_of_columns: - data - servico - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: unique_combination__sumario_servico_dia_pagamento - dbt_utils.expression_is_true: expression: (valor_a_pagar - valor_penalidade) IS NOT NULL AND (valor_a_pagar - valor_penalidade) >= 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: expression_is_true__sumario_servico_dia_pagamento columns: - name: data description: "Data de emissão do sinal de GPS." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__data__sumario_servico_dia_pagamento - name: tipo_dia description: "Dia da semana considerado para o cálculo da distância planejada - categorias: Dia Útil, Sabado, Domingo." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__tipo_dia__sumario_servico_dia_pagamento - name: consorcio description: "Consórcio que opera o serviço." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__consorcio__sumario_servico_dia_pagamento - name: servico description: "Serviço realizado pelo veículo." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__servico__sumario_servico_dia_pagamento - name: viagens_dia description: "Quantidade de viagens apuradas por dia." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_dia__sumario_servico_dia_pagamento - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: grater_than_zero__viagens_dia__sumario_servico_dia_pagamento - name: km_apurada_dia description: "Distância apurada para o serviço por dia (km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__viagens_dia__sumario_servico_dia_pagamento - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") - tests: - - sumario_servico_dia_tipo_soma_km + name: grater_than_zero__viagens_dia__sumario_servico_dia_pagamento + - sumario_servico_dia_tipo_soma_km: + name: soma_km__km_apurada_dia__sumario_servico_dia_pagamento - name: km_subsidiada_dia description: "Distância subsidiada para o serviço por dia (km)." - name: km_planejada_dia description: "Distância planejada para o serviço por dia (km)." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__km_planejada_dia__sumario_servico_dia_pagamento - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: grater_than_zero__km_planejada_dia__sumario_servico_dia_pagamento - name: media_pof description: "Média do indicador percentual de operação por faixa horária." tests: - - dbt_utils.not_null_proportion: - at_least: 1 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + - not_null: + name: not_null__media_pof__sumario_servico_dia_pagamento - dbt_utils.accepted_range: min_value: 0 - config: - where: DATA BETWEEN DATE("{{ var('start_date') }}") AND DATE("{{ var('end_date') }}") + name: grater_than_zero__media_pof__sumario_servico_dia_pagamento - name: desvp_pof description: "Desvio padrão do indicador percentual de operação por faixa horária." - name: km_apurada_registrado_com_ar_inoperante @@ -184,6 +167,11 @@ models: description: "Valor de glosa depositada em juízo (Autuação por ar inoperante, Veículo licenciado sem ar, Penalidade abaixo de 60% e Notificação dos Agentes de Verão)." - name: valor_penalidade description: "Valor penalidade [negativa] (POF =< 60%)." + tests: + - accepted_values_in_table: + ref_column: valor + ref_table: valor_tipo_penalidade + name: accepted_values__valor_penalidade__sumario_servico_dia_pagamento - name: versao description: "{{ doc('versao') }}" - name: datetime_ultima_atualizacao diff --git a/queries/models/veiculo/schema.yml b/queries/models/veiculo/schema.yml index ad0b3a03f..3ed1f18cb 100644 --- a/queries/models/veiculo/schema.yml +++ b/queries/models/veiculo/schema.yml @@ -149,7 +149,13 @@ models: - name: sppo_veiculo_dia description: "Tabela resumo dos veículos que operaram no SPPO e seus respectivos indicadores" tests: - - check_sppo_veiculo_dia + - check_sppo_veiculo_dia: + name: check_sppo_veiculo_dia__sppo_veiculo_dia + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - data + - id_veiculo + name: unique_combination__data_id_veiculo__sppo_veiculo_dia columns: - name: data description: "Data de operação" @@ -181,6 +187,9 @@ models: - Autuado por limpeza/equipamento - Veículo que operou, foi licenciado, mas foi autuado cumulativamente por infrações relacionadas à limpeza e equipamentos do veículo\n - Sem ar e não autuado - Veículo que operou, foi licenciado sem ar condicionado e não foi autuado\n - Com ar e não autuado - Veículo que operou, foi licenciado com ar condicionado e não foi autuado" + tests: + - not_null: + name: not_null__status__sppo_veiculo_dia - name: versao description: "SHA do repositório no Github" - name: sppo_registro_agente_verao diff --git a/queries/packages.yml b/queries/packages.yml index f6f4a01c5..f98fb15af 100644 --- a/queries/packages.yml +++ b/queries/packages.yml @@ -4,4 +4,6 @@ packages: - package: data-mie/dbt_profiler version: 0.8.2 - package: dbt-labs/dbt_utils - version: 1.3.0 \ No newline at end of file + version: 1.3.0 + - package: calogica/dbt_expectations + version: [">=0.10.0", "<0.11.0"] \ No newline at end of file