Você pode usar o NerdGraph para executar a consulta NRQL. Além disso, você também pode usar o NerdGraph para executar uma consulta NRQL assíncrona. consultas assíncronas são executadas em segundo plano e você pode fazer solicitações de acompanhamento para recuperar os resultados da consulta ou o status da consulta. Esse tipo de consulta evita que uma consulta seja interrompida por problemas como tempo limite do browser ou tempo limite da conexão HTTP. É especialmente útil para executar consultas que podem levar muito tempo para serem concluídas.
Requisitos
Se você tiver o Data Plus, poderá executar a consulta assíncrona com duração máxima de 10 minutos usando o NerdGraph ou a UI do criador de consulta.
Para obter mais informações sobre limites de consulta, consulte Limites de consulta.
Exemplo de consulta assíncrono
Aqui está um exemplo de chamada de consulta assíncrona do NerdGraph. O async: true
é o que torna a consulta assíncrona. Esta consulta retornará resultados se for concluída dentro do tempo limite padrão de 5 segundos; caso contrário, retornará dados queryProgress
para uso em consultas de acompanhamento no campo nrqlQueryProgress
.
{ actor { account(id: YOUR_ACCOUNT_ID) { nrql(query: "SELECT * FROM Transaction", async: true) { results queryProgress { queryId completed retryAfter retryDeadline resultExpiration } } } }}
Obtendo os resultados ou status de uma consulta assíncrona
Se a sua consulta exceder o tempo limite padrão, ela retornará um ID de consulta. Você pode pegar esse ID e executar uma segunda consulta para obter os resultados da consulta, se estiver concluída, ou então o status dessa consulta.
{ actor { account(id: YOUR_ACCOUNT_ID) { nrqlQueryProgress(queryId: "YOUR_QUERY_ID") { results queryProgress { queryId completed retryAfter retryDeadline resultExpiration } } } }}
Alguns detalhes importantes sobre esta consulta:
- O
queryId
vem dos dadosqueryProgress
retornados pela consulta assíncrono original. - O argumento
account
deve corresponder ao argumentoaccount
da consulta original. - Esta consulta retornará resultados se a execução do assíncrono for concluída; caso contrário, retornará
queryProgress
dados. - A consulta pode ser repetida literalmente até que resultados ou um erro sejam retornados.
Cancelar uma consulta assíncrona
Você pode cancelar uma consulta assíncrona usando a mutação cancelAsyncQuery
. Esta mutação pega o queryId
da consulta que você deseja cancelar.
mutation { cancelAsyncQuery(queryId: "YOUR_QUERY_ID") { queryToken accepted rejectionCause }}