# Carregando dados com DuckDB
library(tidyverse)
library(duckdb)
library(here)
library(DBI)


# Arquivo que vamos carregar
arquivo_parquet <- here("tracts22.parquet")
arquivo_parquet # Endereco absoluto do arquivo no seu computador


# Criando uma conexao com o DuckDB e passamos o caminho do arquivo que queremos ler
# (lembrem-se, fazemos isso para que o R consiga se comunicar com o DuckDB 
# e usar seus recursos de processamento)
con <- dbConnect(duckdb::duckdb(), arquivo_parquet)


# Com o objeto de conexao criado, podemos usar a funcao tbl()
# para fazer com que o duckDB leia o arquivo Parquet
setores <- tbl(con, "tracts22")


# Agora, podemos usar as funcoes do dplyr para manipular os dados
# Podemos, por exemplo, agrupar os setores por regiao e calcular a populacao total de cada regiao
setores |>
  group_by(name_region) |>
  summarise(
    total_setores = n(),
    populacao = sum(V0001, na.rm = TRUE),
  ) |>
  arrange(desc(populacao)) 


# Se quisermos salvar o resultado, usamos collect() ao final
# para trazer os dados para dentro da memoria RAM
resultado <- setores |>
  group_by(name_region) |>
  summarise(
    total_setores = n(),
    populacao = sum(V0001, na.rm = TRUE),
  ) |>
  arrange(desc(populacao)) |>
  collect() 

resultado


# Fechamos a conexao com o DuckDB
dbDisconnect(con, shutdown = TRUE)
