Data Tables - Variáveis de contexto

Bom dia,

Estamos criando uma aplicação que é necessário carregar dados históricos e, para isso, utilizamos Data Tables.

Cada uma dessas Data Tables é associada à um cliente, e os dados precisam ser inseridos em blocos da mesma forma com que é feito para dados de um Device, utilizado variável de contexto device-id.

Para solucionar essa questão, usando um Workflow, passamos essas Data Tables para um File .json e criamos uma TAG no Device com o link para os dados. Ex:

Já no Dashboard, utilizamos um bloco em Vega-Lite para carregar estes dados armazenados. Ex:


Que funcionou corretamente.

Porém, para o nosso propósito, é necessário utilizar este URL como uma variável de contexto. Dessa forma tentamos utilizar no lugar do link {{ctx.deviceId-0.tags.SAMPLE.[0]}}. O que não foi possível.

Vocês sabem alguma forma de resolver este problema com o bloco Custom Chart? Ou então alguma forma mais correta de utilizar uma tabela como variável de contexto?

Sei que na solução Tranformer Fleet Management, na aba WEG Specialist - Análise de óleo, é utilizado dados históricos para serem exibidos dinamicamente para cada Device. Então vocês já devem ter se deparado com este meu questionamento e obtiveram uma solução.

Bom dia, Gasperin!

Você pode explicar melhor como está rodando atualmente?
Favor mostrar qual é a experiência de usuário desejada, se puder fornecer prints, será melhor.
Atualmente já está filtrando por cliente?
Este Workflow roda na aplicação ou no experience?

Bom dia Alexandre!

Atualmente já está sendo filtrado por cliente no experience. Além disso, um cliente pode ter acesso a mais de um Device. Sendo que cada Device tem uma Data Table associada com dados históricos de fatura. Exemplo de um bloco que utiliza os dados de uma Data Table:

O experience já é Multi Tenant, porém, apenas para blocos onde conseguimos utilizar as variáveis de contexto. O que não acontece com este bloco da imagem acima, pois os dados são retirados de uma Data Table.

Boa tarde!

Você pode adicionar outras variáveis de contexto e passar este valor para dentro do dash.
No exemplo, foi adicionado o ID único do cliente e enviado para o Dashboard via query:

Crie a nova variável no dashboard:

image

E adicione esta variável na página utilizada:

image

No exemplo, ao chamar esta página, este valor deve ser fornecido no parâmetro “client”:

image

Boa tarde!

Agradeço a dica.
Mas minha dúvida é como eu faço blocos que utilizem Data Tables como variável de contexto. Exemplo:

  • Para o Cliente A, temos o Device A e a Data Table A; Para o Cliente B, temos o Device B e a Data Table B.
  • Em um único dashboard quero apresentar os dados do Device A e Data Table A, para o Cliente A; e Device B e Data Table B, para o Cliente B.

Na minha implementação, hoje, consigo apenas apresentar o Device A para o Cliente A e o Device B para o Cliente B. Mas não consegui achar uma forma de fazer isso com as Data Tables.

Boa tarde!

Observando seu gráfico enviado e conversando com nossa engenharia, podemos ressaltar alguns pontos importantes:

1 - A utilização de Data Tables não é recomendada para dados de séries temporais, conforme a descrição na plataforma:

2 - As data Tables são recomendadas para dados estáticos, como códigos de erro, regras de segurança, dados adicionais de usuários ou dispositivos.

3 - O banco de dados padrão da Plataforma WEGnology já é otimizado no formato “time-series”. O que permite desempenho melhor, principalmente quando seu projeto alcançar maior escala.

4 - No seu caso, o recomendado é utilizar o bloco Custom html, com ele você faz a pesquisa no banco de dados temporal da plataforma através de uma query e apresenta os dados em um gráfico Vega.

Boa tarde,

Muito obrigado pelas recomendações Alexandre. Vamos tentar segui-las quando possível.

Porém, alguns dados de fatura que eu preciso inserir são de anos atrás e, infelizmente, há o limitante de 90 dias para a inserção de dados no banco de dados padrão da WEGnology. Conforme indicado na documentação:

No meu caso, é necessário no máximo, 12 linhas da tabela por ano e, por isso, não chega a apresentar problemas de desempenho.

E ressalto que vocês já possuem uma solução para este caso em: https://tfm.wnology.io/page/dash/62582388a7ed5975d666571b?dashType=oil_transformer_specialist_oil_analysis

Boa tarde,

Conforme o cenário que foi passado (uma tabela por cliente), não é possível alterar a tabela de referência dos dados no Data Table Query de um Custom Chart, pois esse campo não é “Templatable”.

Seguindo isso, existem algumas alternativas:

  1. Utilizar uma tabela única para esses dados, adicionando uma coluna que identifique o “clientId”, dessa forma, será possível manter a tabela selecionada e passar uma query para filtrar os dados do “clientId” conforme o contexto.

  2. A segunda alternativa seria seguir no caminho que você havia proposto inicialmente {{ctx.deviceId-0.tags.SAMPLE.[0]}}, ele também funciona, porém as vezes os dados podem não carregar corretamente, no momento do desenvolvimento, devido ao Cache do navegador. Recomendo que limpe o cache e verifique se a chamada para a URL está sendo realizada através da seção “rede” do DevTools do navegador. Caso a chamada for realizada verifique se o arquivo retornou corretamente (status code = 200).
    image
    Também é possível utilizar variáveis de contexto do tipo “String” ou do tipo “Tag”, ao invés de acessar o valor da tag através da variavel de contexto do tipo “Device”. No caso da variável tipo “String” criada com o nome “sample”, ela seria acessada por {{ctx.sample}}, já a variável do tipo “Tag”, com nome “sample” seria acessada por {{ctx.sample.value}}. E ambas seriam criadas conforme mencionado anteriormente.

Lembrando que criar uma tabela para cada cliente pode não ser uma solução escalável, dependendo da aplicação. E assim como o @Alexandre mencionou, não é recomendado para uma grande quantidade de dados históricos, mas pode ser utilizada para o seu caso, que se trata de uma consumação de dados com uma periodicidade menor.

Espero que isso ajude! Se você tiver mais alguma dúvida, fique à vontade para perguntar.

1 Curtida