NerdGraph를 사용하여 NRQL 쿼리를 실행할 수 있습니다. 또한 NerdGraph를 사용하여 비동기 NRQL 쿼리를 실행할 수도 있습니다. 비동기 쿼리는 백그라운드에서 실행되며 쿼리 결과 또는 쿼리 상태를 검색하기 위해 후속 요청을 할 수 있습니다. 이 유형의 쿼리는 브라우저 시간 초과 또는 HTTP 연결 시간 초과와 같은 문제로 인해 쿼리가 중단되는 것을 방지합니다. 완료하는 데 시간이 오래 걸릴 수 있는 쿼리를 실행할 때 특히 유용합니다.
요구 사항
Data Plus 가 있는 경우 NerdGraph 또는 쿼리 빌더 UI를 사용하여 최대 10분 동안 비동기 쿼리를 실행할 수 있습니다.
쿼리 제한에 대한 자세한 내용은 쿼리 제한을 참조하세요.
비동기 쿼리 예제
다음은 비동기 쿼리 NerdGraph 호출의 예입니다. async: true
은 쿼리를 비동기식으로 만드는 것입니다. 이 쿼리는 기본 제한 시간인 5초 이내에 완료되면 결과를 반환합니다. 그렇지 않으면 nrqlQueryProgress
필드에 대한 후속 쿼리에 사용할 queryProgress
데이터를 반환합니다.
{ actor { account(id: YOUR_ACCOUNT_ID) { nrql(query: "SELECT * FROM Transaction", async: true) { results queryProgress { queryId completed retryAfter retryDeadline resultExpiration } } } }}
비동기 쿼리의 결과 또는 상태 가져오기
쿼리가 기본 시간 초과를 초과하면 쿼리 ID가 반환됩니다. 해당 ID를 사용하고 두 번째 쿼리를 실행하여 쿼리 결과(완료된 경우) 또는 해당 쿼리의 상태를 얻을 수 있습니다.
{ actor { account(id: YOUR_ACCOUNT_ID) { nrqlQueryProgress(queryId: "YOUR_QUERY_ID") { results queryProgress { queryId completed retryAfter retryDeadline resultExpiration } } } }}
이 쿼리에 대한 몇 가지 중요한 세부정보:
queryId
은 원래 비동기 쿼리에서 반환된queryProgress
데이터에서 가져옵니다.account
인수는 원래 쿼리의account
인수와 일치해야 합니다.- 이 쿼리는 비동기 실행이 완료된 경우 결과를 반환합니다. 그렇지 않으면
queryProgress
데이터를 반환합니다. - 쿼리는 결과나 오류가 반환될 때까지 그대로 반복될 수 있습니다.
비동기 쿼리 취소
cancelAsyncQuery
변형을 사용하면 비동기 쿼리를 취소할 수 있습니다. 이 변형은 취소하려는 쿼리의 queryId
을 가져옵니다.
mutation { cancelAsyncQuery(queryId: "YOUR_QUERY_ID") { queryToken accepted rejectionCause }}