Pergunta
· Fev. 20

Automatizar tarefa de extração de dados

Prezados, é possivel automatizar tarefas de extração de dados no caché?

Ex: Gerar uma tarefa que executa diariamente uma consulta e armazena os dados em um arquivo csv. 

Product version: Caché 2018.1
$ZV: 2018.1.3
Discussão (6)2
Entre ou crie uma conta para continuar

Olá @Juliano Assis 

Dê uma olhada no post a seguir:

https://pt.community.intersystems.com/post/usando-o-python-no-intersyste...

O artigo mostra como gerar arquivos excel a partir de classes do InterSystems Iris usando Python. É bem simples e intuitivo.

Depois de gerada a rotina é coloca-la no Task Manager conforme a documentação  disponível: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

Basicamente é usar a opção RunLegacyTask, informar a rotina e definir a periodicidade de execução.

Abraços 

@Juliano Assis Segue um código bem básico e genérico para exportar dados para um arquivo CSV:

ClassMethod exportar(arquivo As %String) As %String
{
Open arquivo:"WN" // Abre o arquivo para escrita (W) e caso ele não exista cria o arquivo (N)
Set next=""
Do
{
Set next=$Order(^Global(next))
If next'=""
{ Set reg=$Get(^Global(next))
If $Piece(reg,"^",3)'=1
{
Set reg=next_","_$Piece(reg,"|",1)_","_$Piece(reg,"^",2)
Use arquivo Write reg,!
Set $Piece(^Global(next),"^",3)=1
}
}
While next'=""
Close arquivo
Quit "OK"
}

O código pega os registros da global que ainda não foram marcados como lido e exporta. Então marca o arquivo como lido. Uma próxima leitura pula este registro.

Pode substituir o uso do $Order por um SELECT recuperando os registros de uma tabela também.

Abraços,