Fonte de dados
Instruções para Consulta SQL em Excel da fonte de dados
Essa funcionalidade habilita que uma consulta seja realizada sobre uma fonte de dados que tem origem num arquivo Excel. Segue abaixo uma tabela exemplo que representa alguns dados da planilha de um Excel:
A | B | C | D | E | |
1 | ID | Solicitante | Prioridade | Criado em | SLA Atendido |
2 | 112 | Ricardo | 3: normal | 28/08/2017 | Sim |
3 | 150 | Luis | 3: normal | 28/08/2017 | Não |
4 | 253 | Marcos | 1: crítica | 17/10/2017 | Não |
5 | 300 | Luis | 2: urgente | 25/10/2017 | Sim |
Para realizar a consulta são usados os conceitos abaixo:
- O nome da tabela a ser usada no SQL é excel, independente do arquivo, apenas serão importados os dados existentes na primeira planilha do arquivo Excel;
- O nome das colunas a serem usadas no SQL tem o mesmo nome das referências na planilha. Por exemplo, a coluna Prioridade, na consulta será coluna_C;
- A consulta deve ter como projeções de retorno apenas valor e data;
- Para utilizar filtro de data na cláusula WHERE, deve ser utilizado o texto no formato ‘aaaa-mm-dd’.
Exemplo:
Consulta com as projeções requeridas e filtros na cláususa WHERE:
SELECT COUNT(coluna_E) AS valor, coluna_D as data FROM excel WHERE coluna_E = ‘Sim’ AND coluna_D = ‘2017-08-28’ GROUP BY coluna_D
Fontes de dados de indicador do tipo Excel com SQL
No cadastro de fonte de dados, ao selecionar a opção Excel com SQL, será exibido o campo Tipo de arquivo com as opções Caminho do arquivo e Upload arquivo
- Caminho do arquivo (comportamento anterior): usuário deve informar o caminho do arquivo que deve estar no diretório configurado na propriedade LOCAL_ARQUIVO_INDICADOR_DS informada no jexp.ini
- Upload do arquivo: usuário envia o arquivo via interface, este arquivo será guardado na diretório informado na propriedade LOCAL_ARQUIVO_INDICADOR_DS do jexp.ini
Nesta opção também será possível baixar o arquivo - Link Ver arquivo.
- Será possível alternar entre as opções acima, sem perder a configuração e o arquivo.
- Caso a propriedade LOCAL_ARQUIVO_INDICADOR_DS não for informada no jexp.ini, os campos ficam bloqueado e será exibido mensagem de erro com orientação para configurar:
- Ao alterar o diretório na propriedade LOCAL_ARQUIVO_INDICADOR_DS, usuário deve mover os arquivos das fontes de dados para o novo diretório manualmente
API para envio de arquivos para fonte de dados de indicadores
- Criado API para envio de arquivos para o Fonte de dados de indicadores http://[URL]/channel/v2/api/v1/datasource/{ID_FONTE_DADOS}/uploadFile
- Na URL deve conter o ID da fonte de dados, o body deve ser do tipo form-data com o atributo file
Exemplo para obter o TOKEN de autenticação (deve-se informar o e-mail do usuário) (alterar para URL do ambiente):
curl --request POST \
--url https://channel.jexperts.com.br/channel/v2/auth2 \
--header 'Content-Type: application/json' \
--cookie 'cloud-environment=production' \
--data '{
"email": "jexperts@jexperts.com.br",
"password": "123456"
}'
Exemplo de envio do arquivo:
curl --location 'https://channel.jexperts.com.br/channel/v2/api/v1/datasource/1/uploadFile' \
--header 'Authorization: Bearer TOKEN' \
--form 'file=@"/home/user/testeds.xlsx"' - Esta API retorna as seguintes mensagens de validação com status 400:
- Nenhum arquivo foi enviado - quando não é informado o atributo file no form ou o arquivo enviado é vazio (0 bytes).
- Arquivo deve ter extenção XLSX
- ID da fonte de dados não informado
- Esta faltando propriedade LOCAL_ARQUIVO_INDICADOR_DS=/usr/java/channel_files no jexp.ini
- Fonte de dados não encontrada
- Esta fonte de dados não é SGBD > Excel com SQL
- Retorno da API: Arquivo salvo com sucesso (Status 200)
- Se ocorrer algum erro, será retornado status 500 junto da mensagem de erro
- Caso token inválido será retornado status 401 - Não autorizado
- A primeira linha do arquivo é considerada cabeçalho e não será lida
- O arquivo não pode utilizar fórmulas (colunas com fórmula serão lidas como texto, não permitindo realizar cálculos)
- Em anexo segue exemplo de planilha
- Exemplo de consulta: SELECT SUM(coluna_d) as valor, now() as data FROM excel WHERE coluna_a = 'Tomate'