Exemplos de configuração do arquivo YAML

Neste segmento, você encontrará uma série de exemplos práticos de utilização do Ro-DOU. A leitura dos exemplos ajudará a visualizar de que maneira o Ro-DOU pode ser utilizado.

Exemplo 1

A configuração a seguir cria uma DAG que realiza a pesquisa diária dos 6 termos listados e envia o relatório para o e-mail fornecido.

dag:
  id: pesquisa_dou_termos_interesse_nitai
  description: Pesquisa termos de interesse de Nitai.
  search:
    terms:
      - dados abertos
      - governo aberto
      - engenharia de dados
      - software livre
      - código aberto
      - open source
  report:
    emails:
      - endereco@dominio.com

Exemplo 2

A configuração a seguir realiza a pesquisa diária de segunda-feira a sexta-feira, 8AM, apenas na Seção 1 e na Edição Suplementar e envia o resultado em formato CSV, anexado ao e-mail. O parâmetro schedule aceita valores CRON.

dag:
  id: dag_id_deve_ser_unico_em_todo_airflow
  description: DAG exemplo de monitoramento no DOU.
  schedule: 0 8 * * MON-FRI
  search:
    terms:
      - alocação
      - realoca
      - permuta
      - estrutura regimental
      - organização básica
    dou_sections:
      - SECAO_1
      - EDICAO_SUPLEMENTAR
  report:
    emails:
      - dest1@gestao.gov.br
      - dest2@gestao.gov.br
    attach_csv: True
    subject: Assunto do Email

Note que aqui são utilizados os parâmetros opcionais schedule, dou_section e attach_csv.

Exemplo 3

A configuração a seguir utiliza o parâmetro from_db_select em terms, que torna dinâmica a parametrização dos termos para pesquisa. Note também a inclusão de tags que ajudam na organização e na busca das DAGs no Airflow.

dag:
  id: dag_ultra_dinamica
  description: A pesquisa depende do select SQL.
  tags:
    - projeto_a
    - departamento_x
  search:
    terms:
      from_db_select:
        sql: SELECT text FROM schema.tabela;
        conn_id: airflow_conn_id
  report:
    emails:
      - email-destino@gestao.gov.br
    subject: "[String] com caracteres especiais deve estar entre aspas"

Exemplo 4

A configuração a seguir utiliza o parâmetro from_airflow_variable em terms, que também carrega dinamicamente a lista de termos. Neste caso, há a recuperação a partir de uma variável do Airflow. Aqui, também é utilizado o campo field para limitar as pesquisas ao campo título das publicações no Diário Oficial da União.

dag:
  id: pesquisa_a_lista_na_variavel
  description: É fácil editar a variável na interface do Airflow.
  search:
    terms:
      from_airflow_variable: nome_da_variavel_no_airflow
    field: TITULO
  report:
    emails:
      - email-destino@gestao.gov.br
    skip_null: False

Caso não encontre nenhum resultado, será enviado um e-mail informando que nenhum termo foi encontrado.

Exemplo 5

A configuração a seguir produz uma DAG que executa apenas uma vez por mês, no dia 1 às 8 AM, como pode ser visto no schedule. Simultaneamente, a pesquisa no Diário Oficial da União é realizada nos diários oficiais do último mês inteiro, através do uso do parâmetro date. Aqui, também é utilizado o parâmetro is_exact_search com valor False para utilizar uma pesquisa aproximada.

Apesar do fato de que o termo buscado "paralelpipido" contenha um erro ortográfico, a busca retorna os resultados corretos. Veja!

dag:
  id: relatorio_mensal_do_dou
  description: Envia um numero menor de emails.
  schedule: 0 8 1 * *
  search:
    terms:
      - paralelpipido
    date: MES
    is_exact_search: False
  report:
    emails:
      - email-destino@gestao.gov.br

Exemplo 6

A configuração a seguir produz uma DAG que pesquisa no Querido Diário pelos termos "pandemia", "dados pessoais" e "prefeitura", buscando apenas os resultados do Diário Oficial de Belo Horizonte. Para conhecer o Querido Diário, acesse https://queridodiario.ok.org.br/.

dag:
  id: dou_qd_example
  description: DAG de teste
  search:
    sources:
    - QD
    territory_id: 3106200 # Belo Horizonte
    terms:
      - pandemia
      - prefeitura
      - '"dados pessoais"'
      - '"Software+valor"~100'
      - '"\"Alimentação escolar\"+valor"~100'
    is_exact_search: False
    number_of_excerpts: 5
    excerpt_size: 500
  report:
    emails:
      - destination@gestao.gov.br
    attach_csv: True
    subject: "Teste do Ro-dou"

Exemplo 7

A configuração a seguir produz uma DAG exatamente igual ao exemplo básico, mas adiciona uma descrição longa do que a DAG faz, usando o parâmetro doc_md. Essa descrição pode conter formatação markdown, incluindo títulos, listas, links etc.

Além disso, acrescenta também uma referência ao nome do arquivo que gerou a DAG, bem como os seus parâmetros.

dag:
  id: markdown_docs_example
  description: DAG com documentação em markdown
  search:
    terms:
    - dados abertos
    - governo aberto
    - lei de acesso à informação
  report:
    emails:
      - destination@gestao.gov.br
    subject: "Teste do Ro-dou"
  doc_md: >-
    ## Ola!

    Esta é uma DAG de exemplo com documentação em markdown. Esta
    descrição é opcional e pode ser definida no parâmetro `doc_md`.

      * Ah, aqui você também pode usar *markdown* para
      * escrever listas, por exemplo,
      * ou colocar [links](graph)!

Para ver essa documentação, basta clicar o botão "DAG Docs" em qualquer tela de visualização da DAG no Airflow.

Botão "DAG Docs". Captura de tela da documentação de DAG no Airflow.

Exemplo 8

Esta configuração envia as notificações para canais Discord. É necessário ter permissões de administrador no Discord para gerar o Webhook:

dag:
  id: discord_example
  description: Envia notificações para canal Discord
  search:
    terms:
    - manifestação cultural
    - expressão cultural
    - política cultural
  report:
    report:
    discord:
      webhook: https://discord.com/api/webhooks/105220xxxxxx811250/Q-XsfdnoHtudTQ-8A6zzzzznitai-vi0bGLE7xxxxxxxxxxxxxxxxxxxmx94R3oZ1h0ngl1

Exemplo 9

Esta configuração envia as notificações para canais Slack. É necessário ter permissões de administrador no Slack para gerar o Webhook:

dag:
  id: slack_example
  description: Envia notificações para canal Slack
  search:
    terms:
    - manifestação cultural
    - expressão cultural
    - política cultural
  report:
    report:
    slack:
      webhook: https://hooks.slack.com/services/XXXXXXXX/XXXXNFDXXX/n6QXXXXrPwxQ71ZXXXXXT9

Exemplo 10

Esta configuração filtra os resultados por órgão/unidade selecionados. Por enquanto disponível apenas para as pesquisas no DOU.

dag:
  id: department_example
  description: DAG de teste (filtro por departamento)
  search:
    terms:
      - dados abertos
    department:
      - Ministério da Gestão e da Inovação em Serviços Públicos
      - Ministério da Defesa
  report:
    emails:
      - destination@gestao.gov.br
    subject: "Teste do Ro-dou"

Exemplo 11

Esta configuração permite múltiplas buscas utilizando o mesmo arquivo. O Ro-dou permite numa mesma busca juntar resultados do DOU e Querido Diário.

dag:
  id: multiple_searchs_example
  description: DAG de teste com múltiplas buscas
  search:
    - header: "Pesquisa no DOU"
      sources:
        - DOU
      terms:
        - dados abertos
        - governo aberto
        - lei de acesso à informação
      force_rematch: On
      ignore_signature_match: On
    - header: "Pesquisa no QD"
      sources:
        - QD
      terms:
        - dados abertos
        - governo aberto
        - lei de acesso à informação
      force_rematch: On
      ignore_signature_match: On
    - header: "Pesquisa no DOU e QD (misto)"
      sources:
        - DOU
        - QD
      terms:
        - dados abertos
        - governo aberto
        - lei de acesso à informação
      force_rematch: On
      ignore_signature_match: On
  report:
    emails:
      - destination@gestao.gov.br
    subject: "Teste do Ro-dou"

Exemplo 12

Esta configuração filtra os resultados por tipos de publicações selecionadas. Disponível para as pesquisas no DOU e INLABS.

dag:
  id: pubtype_example
  description: DAG de teste (filtro por tipo de publicação)
  search:
    sources:
      - DOU
    terms:
      - programa
    pubtype:
      - Ato
      - Portaria
      - Edital
      - Extrato
      - Ratificação
      - Resolução
      - Retificação
      - Protocolo
  report:
    emails:
      - destination@gestao.gov.br
    subject: "Teste do Ro-dou"

Exemplo 13

Esta dag recebe e lista dados de múltiplos territórios para busca no Querido Diário.

dag:
  id: qd_list_territory_id_example
  description: DAG de teste com múltiplos territory_id
  schedule: 0 8 * * MON-FRI
  search:
    header: "Teste com múltiplos territory_id"
    territory_id:
      - 3300100
      - 3300159
      - 3300209
      - 3305703
    sources:
      - QD
    terms:
      - LGPD
      - RIO DE JANEIRO
      - DADOS PESSOAIS
    is_exact_search: True
    number_of_excerpts: 5
    excerpt_size: 500
  report:
    emails:
      - destination@economia.gov.br
    subject: "Teste do Ro-dou"
    skip_null: False

Exemplo 14

Realiza as busca de termos a partir de uma fonte de um banco SGBD externo, possibilitando assim que os termos de buscas sejam dinâmicos.

dag:
  id: terms_from_db_example
  description: DAG de teste
  search:
    terms:
      from_db_select:
        sql: >
          SELECT 'cloroquina' as TERMO, 'Ações inefetivas' as GRUPO
          UNION SELECT 'ivermectina' as TERMO, 'Ações inefetivas' as GRUPO
          UNION SELECT 'vacina contra covid' as TERMO, 'Ações efetivas' as GRUPO
          UNION SELECT 'higienização das mãos' as TERMO, 'Ações efetivas' as GRUPO
          UNION SELECT 'uso de máscara' as TERMO, 'Ações efetivas' as GRUPO
          UNION SELECT 'distanciamento social' as TERMO, 'Ações efetivas' as GRUPO
        conn_id: example_database_conn
    date: MES
  report:
    emails:
      - destination@economia.gov.br
    attach_csv: True
    subject: "[String] com caracteres especiais deve estar entre aspas"

Exemplo 15

Esta dag coleta e realiza pesquisas de dados do inlabs.

dag:
  id: inlabs_example
  description: DAG de teste
  tags:
    - inlabs
  schedule: 0 8 * * MON-FRI
  dataset: inlabs
  owner:
    - cdata
  search:
    sources:
    - INLABS
    terms:
      - tecnologia
      - informação
    use_summary: True
  report:
    emails:
      - destination@economia.gov.br
    attach_csv: True
    subject: "Teste do Ro-dou"

Exemplo 16

Esta dag realiza pesquisas com parâmetros de busca avançados quando a fonte é INLABS.

dag:
  id: inlabs_advanced_search_example
  description: DAG de teste
  tags:
    - inlabs
  dataset: inlabs
  owner:
    - cdata
  search:
    sources:
    - INLABS
    terms:
    - designar & ( MGI | MINISTÉRIO FAZENDA)
    - instituto & federal ! paraná
  report:
    emails:
      - destination@economia.gov.br
    attach_csv: True
    subject: "Teste do Ro-dou"

Exemplo 17

Esta dag é utilizada para ocultar filtros de pesquisa de texto e outros metadados.

dag:
  id: hide_filters_example
  description: DAG de teste
  tags:
    - inlabs
  schedule: 0 8 * * MON-FRI
  search:
    header: HEADER TEXT
    sources:
    - INLABS
    terms:
    - tecnologia
    - informação
    department:
      - Ministério da Gestão e da Inovação em Serviços Públicos
      - Ministério da Defesa
  report:
    emails:
      - destination@economia.gov.br
    attach_csv: True
    subject: "Teste do Ro-dou"
    hide_filters: True