Se você tem acompanhado as postagens anteriores no blog do Couchbase, já viu conteúdo sobre o Couchbase Shell última versão. Estou experimentando coisas diferentes e hoje quis ver o que poderia fazer com conjuntos de dados de séries temporais.

Ingerir dados de séries temporais

Navegando no Kaggle, encontrei dados de temperatura por cidade. Eu fiz o download. Ele tem cerca de 500 Mb e isso o torna difícil de manipular como um todo. Mas, é claro, é um arquivo de texto, portanto, podemos facilmente dar uma olhada na estrutura de dados da seguinte forma:

8599212 linhas, serão 8599211 documentos. Meu objetivo final é ver um gráfico de temperatura de várias cidades ao longo dos anos. Para fazer isso, primeiro vou importar tudo para um bucket de importação e, em seguida, transformarei os dados em séries temporais.

Se eu importar isso de forma ingênua, terei um documento por cidade/grupo de meses. Portanto, a chave do meu documento será como Århus:1743-11-01. Digamos que eu queira fazer o upload apenas da primeira linha, ela deverá ter a seguinte aparência:

E agora que eu sei que funciona, vamos pegar tudo e fazer um lote:

Eu criei um série na qual importo o resultado de uma coleção SELECIONAR agregação, obtendo todas as datas como registros de data e hora e todas as Temperatura média como valor:

E agora todos os dados estão disponíveis como séries temporais. Digamos que eu queira os dados de Paris, posso usar o comando _timeseries função como esta:

Para acelerar o processo, você pode criar o seguinte índice: CREATE INDEX ix1 ON series(City, ts_end, ts_start);

Observe o uso da palavra ts_ranges no início. Você pode reutilizar facilmente esses valores em um modelo Cordas. Eles começam com um $ e as variáveis devem estar entre parênteses, como ($my_variable). Isso também significa que agora você precisa escapar do caractere de parêntese, bem como das aspas duplas.

Plotar séries temporais

Há uma variedade de bibliotecas de plotagem de terminal, aqui estou usando youplot:

Tudo isso é ótimo, mas o ideal é que eu queira ter várias cidades para compará-las. Todas as colunas CSV adicionais são coletadas automaticamente, desde que você execute linhas do youplot. Fazendo as coisas gradualmente, vamos começar com o suporte de várias cidades na consulta. Portanto, algumas alterações aqui:

    • agrupamento dos dados por tempo
    • adicionando d.city IN ($city) na cláusula where. Isso funciona porque a matriz de cidades é um literal String de uma matriz JSON. Vamos dar uma olhada na resposta como um documento JSON:

Mas isso não pode se transformar em um CSV, mesmo que você achate tudo dessa forma:

Portanto, podemos transformá-lo em um objeto da seguinte forma: Objeto v.city : v.temp FOR v IN ARRAY_AGG({"city": d.city, "temp":t._v0}) when v IS NOT MISSING END

Que agora pode ser transformado em um CSV:

E, com isso, estamos prontos para traçar várias linhas:

Para facilitar isso, você pode usar funções. Criar uma .nu arquivo, como temp.nucom o seguinte conteúdo:

Então, se você o adquirir, ele se tornará muito mais fácil de usar:


Espero que isso tenha lhe dado uma rápida visão geral do suporte a séries temporais do Couchbase, da manipulação de dados do Couchbase Shell e de como você pode usar outros comandos do shell, como youplot para tornar as coisas mais integradas e interessantes. Você poderia facilmente gerar um relatório completo em vários formatos a partir de um Ações do GitHub por exemplo, infinitas possibilidades!

 

Autor

Postado por Laurent Doguin

Laurent é um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve código em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programação reativa e outras coisas que estão na moda. Ele também foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experiência para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Relações com Desenvolvedores na Couchbase.

Deixar uma resposta