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 CMDB e, quando necessário, pesquisar ativos relacionados (por vínculos/relacionamentos).
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).
- 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"]}
Ou com ativo relacionado:
ictypefilters{citype in ["Tipo A"] and relatedcitype in ["Tipo B"]}
Exemplos
ictypefilters{citype in ["Web Application"]}
ictypefilters{citype in ["Team"] and relatedcitype in ["Web Application"]}
Dica: se você informarrelatedcitype, normalmente você também 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}
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)