Consulta SQL para listar processos e também seu campos

Prezados, boa tarde!

Temos uma área de BI dentro da empresa e gostariam de gerar alguns dashboards para acompanhamento e medição dos fluxos.
A ferramenta que utilizam é o Power BI, foi solicitando para minha coordenação a extração dos dados do formulário via Linked Server (SQL Server) para um base intermediária que será consumida pelo Power BI.

Localizei uma tabela que contém algumas informações do processo, sendo ela a PROCES_WORKFLOW, porém serão necessárias mais informações sobre os processos, exemplo:
Lista de campos;
Histórico da atividades (executor, quando assimiu a atividade, quando finalizou a atividade);

Alguém alguma vez já precisou extrair essas informações? Ou alguma outra similar direto da base de dados?

Tentei gerar um diagrama do banco, mas pelo visto a base do Fluig não trabalha com chaves estrageiras entre as tabelas, o que impossibilitou a geração.

Sem saber a forma que as tabelas se relacionam eu não consigo evoluir com a demanda.
Poderiam me ajudar?

Os registros dos campos dos processos são armazenados nas tabelas “ML” do banco tanto os registros principais quanto as tabelas pai e filho.

Essa consulta te retorna o código das tabelas ML do formulário principal e suas tabelas pai e filho. Pode fazer um select nelas também caso precise.

SELECT
l.COD_LISTA_PAI,
l.COD_LISTA_FILHO,
d.COD_LISTA,
l.COD_LISTA_PAI,
l.COD_LISTA_FILHO,
l.COD_TABELA
,d.NUM_DOCTO_PROPRIED
,d.NUM_VERS_PROPRIED

FROM DEF_PROCES p – Tabela principal de configuração dos processos
LEFT JOIN VERS_DEF_PROCES vp ON vp.COD_DEF_PROCES = p.COD_DEF_PROCES – Tabela auxiliar de versões do processo
AND vp.LOG_ATIV = 1
LEFT JOIN DOCUMENTO d ON d.NR_DOCUMENTO = vp.NUM_PASTA_FORM – Tabela de formulários/documentos ECM
AND d.VERSAO_ATIVA = 1
LEFT JOIN SERV_DATASET ds ON ds.COD_DATASET = d.NM_DATASET – Tabela de datasets dos formulários/documentos
LEFT JOIN META_LISTA_REL l ON l.COD_LISTA_PAI = d.COD_LISTA – Tabela de referência das tabelas de dados dos formulários
WHERE p.COD_DEF_PROCES = ‘NOME DO SEU PROCESSO’ OR ds.COD_DATASET = ‘NOME SEU DATASET’
ORDER BY vp.NUM_VERS DESC;

Com o código de retorno você faz uma consulta tipo essa aqui para ter retorno dos dados do processo e do formulário.

SELECT * FROM ML00XXXX s
INNER JOIN PROCES_WORKFLOW W ON s.cardid = W.NR_DOCUMENTO_CARD_INDEX AND s.documentid = W.NR_DOCUMENTO_CARD AND W.status != 1

E outra assim, para ter dados das pai e filhos relacionadas ao formulário.

SELECT * FROM ML00XXXX
INNER JOIN ML00YYYY ON ML00XXXX.documentid=ML00YYYY.documentid AND ML00YYYY.version=(SELECT max(version) FROM ML00YYYY TB2 WHERE TB2.documentid = ML00YYYY.documentid )
WHERE ML00XXXX.version=(SELECT max(version) FROM ML00XXXX TB WHERE TB.documentid = ML00XXXX.documentid )

Entenda o ML00XXXX como sendo o X o código de retorno da primeira consulta informada.
A query foi feita em Oracle, talvez precise adaptar.

2 curtidas

Fiz a primeira query e ela retornou quatro registros:

COD_LISTA_PAI COD_LISTA_FILHO COD_LISTA COD_LISTA_PAI COD_LISTA_FILHO COD_TABELA NUM_DOCTO_PROPRIED NUM_VERS_PROPRIED
12 13 12 12 13 files 1236026 13000
12 14 12 12 14 fields 1236026 13000
12 22 12 12 22 areaFields 1236026 13000
12 23 12 12 23 areaFiles 1236026 13000

Como prosseguir?

SELECT * FROM ML001012 s
INNER JOIN PROCES_WORKFLOW W ON s.cardid = W.NR_DOCUMENTO_CARD_INDEX AND s.documentid = W.NR_DOCUMENTO_CARD AND W.status != 1

Esqueci do 01 que é a empresa que vc esta utilizando ML001012 o 12 é o valor do formulário principal “COD_LISTA_PAI”

1 curtida

Este tópico foi fechado automaticamente 16 horas depois da úlima resposta. Novas respostas não são mais permitidas.