Índice
Introdução
O Smart View é uma solução desenvolvida para análise e geração de relatórios com base em dados transacionais. Isso significa que, ao contrário de ferramentas específicas de BI, ele não possui otimizações para tratar de dados massivos, também chamados de big data. O Smart View não possui um limite definido de capacidade de processamento de dados, porém, a medida que a quantidade de dados aumenta, mais recursos computacionais (processador e memória) são exigidos. Assim, a limitação passa a ser exclusivamente do hardware disponível, e também depende do tipo do recurso sendo visualizado, conforme listado abaixo:
- Relatórios: Geração de relatórios consomem majoritariamente recursos (processador e memória) do Servidor do Smart View;
- Tabelas Dinâmicas e Visões de Dados: Visualização de Tabelas e Visões consomem majoritariamente recursos (processador e memória) da Estação Cliente, isto é, onde os dados estão sendo exibidos.
Isso significa que caso seja solicitada a geração de um relatório e, com base nos parâmetros ou filtros configurados, o Objeto de Negócio entregue um volume muito grande de dados, o Smart View pode consumir toda a memória disponível no servidor ou mesmo quebrar a aplicação por falta de memória disponível. Da mesma forma, a visualização de uma Tabela Dinâmica ou uma Visão de Dados pode receber um volume de dados do Objeto de Negócio que a Estação Cliente não tenha capacidade de renderizar em tela ou mesmo apresente uma performance muito ruim de navegação.
Para evitar que situações como as expostas acima ocorram, foram definidos limites de recebimento de dados no Smart View, os quais, em ambientes OnPremise, podem ser alterados. Quando o limite é atingido, a conexão de solicitação de dados do Objeto de Negócio é encerrada e o recurso é gerado/exibido com os dados recebidos.
Limites por Tipo de Recurso
A limitação é definida com base no tamanho (em KB) dos dados recebidos do Objeto de Negócio. Por padrão, o Smart View implementa os limites abaixo:
- Relatórios: 1.000.000 KB (1GB)
- Tabelas Dinâmicas e Visões de Dados: 500.000 KB (500MB)
Caso os limites sejam atingidos, será exibido um aviso na interface e também será registrado em log, conforme exemplo abaixo:

[14:00:27.944 INF] [0HN6IEACLVUMU:00000002] [] A operação de busca de dados foi abortada, pois o limite de dados foi atingido. Limite: 524288000 bytes. Dados: 524288648 bytes.
[14:00:38.899 INF] [0HN6IEACLVUMU:00000002] [] Busca de dados do recurso data-grid:fd285449-0691-45ce-b734-70fe48435fb0 retornou 491827 registros
No registro do log de exemplo acima é informado que o limite de dados foi atingido (524288000 bytes) e quantos dados foram disponibilizados para o recurso do Smart View (524288648 bytes.). O número de dados geralmente será superior ao limite pra evitar que o último registro do Objeto de Negócio que foi lido seja parcialmente descartado. Em seguida é exibido quantos registros foram retornados para utilização no recurso, no caso, 491827 registros.
Configurando os Limites
É possível alterar o valor limite de dados dos recursos conforme mostrado abaixo:
Para realizar a configuração dos limites de dados, é necessário que o Smart View Agent esteja atualizado. Confira em Atualização do Agent.
No diretório raiz do Smart View (ex.: C:\TOTVS\smart-view), deve-se localizar o arquivo appsettings.Production.json. Caso ele não exista, deve-se criá-lo.
No arquivo devem ser adicionadas as propriedades abaixo para definir os novos limites:
- SMART_VIEW_REPORT_GETDATALIMIT_KB : Valor em KB do limite de dados para geração de Relatórios;
- SMART_VIEW_GETDATALIMIT_KB : Valor em KB do limite de dados para exibição de Tabelas Dinâmicas e Visões de Dados;
Abaixo um exemplo do conteúdo do arquivo appsettings.Production.json onde os valores dos limites foram alterados, respectivamente, para 1,5GB e 750MB:
{
"SMART_VIEW_REPORT_GETDATALIMIT_KB": 1500000,
"SMART_VIEW_GETDATALIMIT_KB": 750000
}
Após incluir as configurações, para que elas sejam aplicadas, é necessário reiniciar o serviço do Agent, que por padrão é cadastrado no sistema operacional como TReports.Agent.