PAQL Quick Reference
PAQL (Priax Asset Query Language) Quick Reference
1) O que é a PAQL e para que ela serve
PAQL (Priax Asset Query Language) é a linguagem de consulta usada no Priax para pesquisar ativos (CIs) na CMDBCMDB, filtrando por tipos de IC, atributos do próprio IC, pelas relações do IC e, quando necessário, pesquisar ativospor características de ICs relacionados (por vínculos/relacionamentos). ao IC que se deseja encontrar/listar.
Com a PAQL você consegue:
- Selecionar quais tipos de ativos (citype) você quer listar (ex.: Servers, Web Application).
- Filtrar ativos por atributos/campos (ex.: Nome, Fabricante, Tipo de criação).
- Filtrar por relações que o ativo possui.
- Restringir a pesquisa a ativos relacionados por um tipo de relação (ex.: Service Owned, Composes) com algum outro IC (relatedcitype).
- Definir quais campos devem voltar no resultado (returns) e como nomeá-los (alias).
- Ordenar o resultado (orders).
A PAQL é composta por blocos, e cada bloco tem um papel específico na filtragem dos ativos. Você monta uma expressão juntando blocos em sequência.
2) Conceitos: CI Types e Related CI Types
CI Types (citype)
Um CI Type (ou citype) é o tipo do ativo principal que você quer buscar.
Exemplos comuns: Servers, Team, Web Application, Relational Databases.
Quando você usa apenas citype, a consulta busca ativos somente desse tipo, sem obrigar a existência de relacionamento com outro ativo.
Related CI Types (relatedcitype)
“Quero achar ativos do tipo A que estejam relacionados a ativos do tipo B (e possivelmente filtrar o B também).”
3) Estrutura geral de uma PAQL
Uma PAQL é um texto com um ou mais blocos:
ictypefilters{...}
relsfilters{...}
cifilters{...}
relatedcifilters{...}
returns{...}
orders{...}
Regras gerais importantes
- Blocos são escritos como:
nomeDoBloco{ ... } - Dentro de alguns blocos, você pode combinar condições usando a palavra
and. - Listas são escritas como:
["Valor 1","Valor 2"] - Campos/atributos são referenciados como strings entre aspas no formato:
"Grupo\Campo"
4) Blocos da PAQL
4.1) ictypefilters{...} — Tipos de ativos (principal e relacionado)
Define o tipo do ativo principal (citype) e, opcionalmente, o tipo do ativo relacionado (relatedcitype).
Sintaxe
ictypefilters{citype in ["Tipo A","Tipo B"]}
Ou com ativo relacionado:
ictypefilters{citype in ["Tipo A","Tipo B"] and relatedcitype in ["Tipo B"C"]}
Exemplos
ictypefilters{citype in ["Web Application"]}
ictypefilters{citype in ["Team"] and relatedcitype in ["Web Application"]}
Dica: se você informarrelatedcitype, normalmentevocê também poderá usarárelsfilters{...}e/ourelatedcifilters{...}.
4.2) relsfilters{...} — Quais relacionamentos considerar (entrada e saída)
Restringe por quais tipos de relacionamento os ativos devem estar ligados.
outrels in [...](relações “de saída”)inrels in [...](relações “de entrada”)
Sintaxe
relsfilters{inrels in ["Nome da Relação"]}
relsfilters{outrels in ["Nome da Relação"]}
relsfilters{outrels in ["Relação A"] and inrels in ["Relação B"]}
Exemplos
relsfilters{inrels in ["Service Owner"]}
relsfilters{outrels in ["Service Owned"] and inrels in ["Service Owner"]}
relsfilters{outrels in ["Is Composed"] and inrels in ["Composes"]}
4.3) cifilters{...} — Filtros por atributos do ativo principal (A)
Filtra o ativo principal por campos/atributos.
Sintaxe
"Grupo\Campo" = "Valor"
Múltiplas condições:
cifilters{"Grupo\Campo 1" = "Valor 1" and "Grupo\Campo 2" = "Valor 2"}
Exemplos
cifilters{"General\Name" = "Windows 2016"}
cifilters{"General\Create Type" = "Manual"}
4.4) relatedcifilters{...} — Filtros por atributos do ativo relacionado (B)
Filtra o ativo relacionado por campos/atributos.
Sintaxe
relatedcifilters{"Grupo\Campo" = "Valor"}
Exemplos
relatedcifilters{"General\Name" = "CRM"}
relatedcifilters{"General\Name" = "C:"}
4.5) returns{...} — Quais campos retornar (colunas) e aliases
Define quais atributos serão devolvidos no resultado.
Sintaxe
returns{"Grupo\Campo" as Alias, "Grupo\Campo 2" as Alias2, "Grupo\Campo 3"}
Exemplos
returns{"General\Name" as Name}
returns{
"Basic Network Addresses\Manage IP Addresses" as IP,
"General\Name" as Name,
"Basic Network Addresses\Hostname" as Hostname
}
Boa prática: useaspara nomes curtos (ex.:Name,Hostname,IP).
4.6) orders{...} — Ordenação
Define a ordenação dos resultados, normalmente pelo alias definido em returns.
Sintaxe
orders{Alias}
Exemplos
orders{Name}Name,Hostname}
orders{Hostname}
5) Exemplos completos (prontos para uso)
Exemplo A — Web Application (sem relacionamentos)
ictypefilters{citype in ["Web Application"]}
returns{"General\Name" as Name}
orders{Name}
Exemplo B — Team relacionado a Web Application (filtrando a aplicação)
ictypefilters{citype in ["Team"] and relatedcitype in ["Web Application"]}
relsfilters{outrels in ["Service Owned"] and inrels in ["Service Owner"]}
relatedcifilters{"General\Name" = "CRM"}
returns{"General\Name" as Name}
orders{Name}
Exemplo C — Server relacionado a Windows Disk Volume (filtrando ambos)
ictypefilters{citype in ["Servers"] and relatedcitype in ["Windows Disk Volume"]}
relsfilters{outrels in ["Is Composed"] and inrels in ["Composes"]}
cifilters{"General\Name" = "Windows 2016"}
relatedcifilters{"General\Name" = "C:"}
returns{
"Basic Network Addresses\Manage IP Addresses" as IP,
"General\Name" as Name,
"Basic Network Addresses\Hostname" as Hostname
}
orders{Hostname}
6) Checklist rápido para montar sua PAQL
- Escolha o tipo principal:
ictypefilters{citype in ["..."]} - Se existir um “lado relacionado”, adicione:
relatedcitype in ["..."]relsfilters{...}relatedcifilters{...}(se precisar filtrar o relacionado)
- Filtre o principal com
cifilters{...}(se necessário) - Defina colunas com
returns{...} - Ordene com
orders{...}(normalmente pelo alias)