Construção de um dashboard com os dados da API do youtube

python apache_airflow apache_hive youtube etl apache_spark streamlit

Conceitos Rápidos

  • DAG: É uma representação do fluxo de trabalho, sem ciclos
  • Operators: São classes no Airflow que representam uma tarefa específica.
  • Hooks: São usados para fazer iterações entre os sistemas, seja API, banco de dados

Endpoints utilizados:

  1. Pesquisar assunto do YouTube:
    • URL: /youtube/v3/search
    • Descrição: URL para obter os vídeos por assunto. Salva todo o histórico de busca, independente do idioma do canal.
  2. Filtrar canais brasileiros:
    • URL: /youtube/v3/channels
    • Descrição: Após salvar os registros, esta URL é usada para consultar o idioma do canal e gerar uma lista de vídeos dos canais.
  3. Obter dados dos vídeos:
    • URL: /youtube/v3/videos
    • Descrição: Após obter a lista de vídeos brasileiros, esta URL é usada para obter os dados completos. Os campos viewCount, likeCount, favoriteCount, commentCount serão usados, sempre gravando os dados históricos.
  4. Extrair comentários:
    • URL: /youtube/v3/commentThreads
    • Descrição: Depois de extrair a lista de vídeos, esta URL é executada para extrair os comentários, gravando a requisição original em um datalakes.
  5. Extrair respostas dos comentários:
    • URL: /youtube/v3/comments
    • Descrição: Depois de extrair os comentários, cada comentário tem um ID que mostra se possui respostas. Esta URL é usada para extrair as respostas dos comentários.

Estrutura do datalake:

A figura abaixo mostra a estrutura do datalake que foi construido.

Exemplo de imagem

A Figura abaixo mostra o fluxo de dados até a geração do dashboard

Exemplo de imagem

A figura abaixo mostra o diagrama de classe da composição da dag. A lógica ficaria assim: para cada endpoints da api do youtube, iria herdar da classe base com seus requisitos específicos.

A figura abaixo mostra uma proposta de diagrama de atividade para a DAG

Organização do dashboard

O dashboard possui duas páginas divididas da seguinte maneira:

Página Análise Assunto

Responsável por gerar as métricas de visualização de acordo com os assuntos selecionados. As métricas em questão são:

  • Comparação do desempenho por dia do vídeo selecionando visualização, comentários e likes.
  • Frequência dos vídeos publicados: Qual o dia da semana que possui o pico de vídeos publicados.
  • Top 10 Vídeos com mais visualizações selecionando dia e comentários, visualizações e likes.
  • Desempenho do canal por dia selecionando comentários, visualizações e likes.
  • Desempenho do vídeo por dia selecionando comentários, visualizações e likes.
  • Quantidade de palavras-chave no título.
  • Taxa de engajamento por dia.
  • Análise popularidade tags.
  • Top 10 Categorias Populares selecionando Visualizações, comentários e likes e dia.
  • Top 10 Canais Populares selecionando Visualizações, comentários e likes e dia.
  • Desempenho Categoria dia selecionando Visualizações, comentários e likes e dia.
  • Top 10 Vídeo por Categoria.
  • Top 10 Engajamento Canal.
  • Top 10 Engajamento Vídeo.

Discussão das métricas

  • Total de visualizações/comentários e likes por dia: A API do YouTube fornece esses dados de forma cumulativa. Para obter as visualizações/comentários e likes por dia, é necessário pegar o maior valor do dia e posteriormente subtrair o valor do dia atual ao do dia anterior.

  • Taxa de engajamento: A taxa de engajamento é a quantidade de interações entre o público do canal e o conteúdo dele. A fórmula da taxa de engajamento é:

    Taxa de Engajamento = [(Número de Curtidas + Número de Comentários + Número de Compartilhamentos) / Número Total de Visualizações] * 100

Observações:

Mesmo que o diagrama de atividade apresente, no final do processo, uma execução completa, uma proposta seria de implementar uma verificação de vídeos que contenham comentários antes de fazer todo o fluxo de comentários. Também pode ser desenvolvido, uma análise de inscritos que se inscreveram/desincreveram por dia.

Demonstração

Clique aqui para ir ao link do reposítório

Contato

Entre em contato comigo por e-mail ou redes profissionais.