프로그래매틱 방식으로 작업 실행

REST API나 클라이언트 라이브러리를 사용하여 프로그래매틱 방식으로 BigQuery 작업을 실행하려면 다음 안내를 따르세요.

  1. 클라이언트 코드에서 생성된 고유 작업 ID를 사용하여 jobs.insert 메소드 호출
  2. 주기적으로 작업 리소스를 요청하고 상태 속성을 검토하여 작업 완료 시기 확인
  3. 작업이 성공적으로 완료되었는지 확인

필수 권한

BigQuery 작업을 실행하려면 작업을 제출하는 데 사용된 서비스 계정 또는 사용자에게 bigquery.jobs.create 권한을 부여하거나, 사용자 계정에 bigquery.jobs.create 권한을 포함하는 프로젝트 수준의 사전 정의된 IAM 역할을 부여해야 합니다. 아래의 사전 정의된 IAM 역할에는 bigquery.jobs.create 권한이 있습니다.

BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.

작업 실행

프로그래매틱 방식으로 작업을 실행하는 방법은 다음과 같습니다.

  1. jobs.insert 메소드를 호출하여 작업을 시작합니다. jobs.insert 메소드를 호출할 때 다음 정보가 있는 작업 리소스 표현을 포함시킵니다.

    • jobReference 섹션의 location 속성에 있는 사용자 위치
    • 클라이언트 코드에서 생성한 작업 ID. 작업 ID가 없으면 서버가 대신 생성하지만, 클라이언트 측에서 작업 ID를 생성해 jobs.insert 호출의 안정적인 재시도를 허용하는 것이 좋습니다.

      예를 들면 다음과 같습니다.

      {
        "jobReference": {
          "projectId": "my_project",
          "jobId": "job_123",
          “location”: “asia-northeast1”
        },
        "configuration":
        {
          // ..
        },
      }
      

  2. 작업 리소스의 configuration 섹션에 로드, 쿼리, 추출 또는 복사와 같은 작업 유형을 지정하는 하위 속성을 포함시킵니다.

  3. jobs.insert 메소드를 호출한 후에는 작업 ID와 위치를 바탕으로 jobs.get을 호출하여 작업 상태를 확인하고 status.state 값을 확인하여 작업 상태를 파악합니다. status.stateDONE이라면 작업 실행이 중단된 상태입니다. 단, DONE 상태가 작업이 성공적으로 완료되었다는 뜻은 아니며 더 이상 실행되지 않는다는 의미일 뿐입니다.

  4. 작업 성공 여부를 확인합니다. 작업에 errorResult 속성이 있으면 작업이 실패한 것입니다. status.errorResult 속성에는 실패한 작업의 문제 원인을 설명하는 정보가 포함되어 있습니다. status.errorResult가 없으면 작업은 성공적으로 끝났지만, 로드 작업 시 일부 행을 가져오는 것과 관련된 문제 등 치명적이지 않은 오류가 발생했을 수 있다는 의미입니다. 치명적이지 않은 오류는 작업의 status.errors 목록에 반환됩니다.

작업 ID 생성

클라이언트 코드를 이용해 작업 ID를 생성하고 jobs.insert를 호출할 때 이 ID를 전달하는 것이 바람직합니다. 작업 ID를 지정하지 않고 jobs.insert를 호출하면 BigQuery가 사용자를 대신해 작업 ID를 생성하지만 호출이 반환될 때까지는 작업 상태를 확인할 수 없습니다. 또한 작업이 성공적으로 삽입되었는지 여부를 알기 어려울 수도 있습니다. 사용자의 고유 작업 ID를 사용하면 언제든지 작업 상태를 확인할 수 있으며, 동일한 작업 ID로 재시도해 작업이 정확히 한 번만 시작되는지 확인합니다.

작업 ID는 문자(a~z, A~Z), 숫자(0~9), 밑줄(_) 또는 대시(-)로 구성된 문자열이며 최대 1,024자가 허용됩니다. 작업 ID는 프로젝트 내에서 고유해야 합니다.

고유 작업 ID를 생성하는 일반적인 방법은 타임스탬프 또는 GUID로 구성되고 사람이 읽을 수 있는 프리픽스와 서픽스를 사용하는 것입니다. 예: daily_import_job_1447971251

GUID를 생성하는 메소드의 예는 Python UUID 모듈에서 찾을 수 있습니다. Python uuid4() 메소드를 jobs.insert와 함께 사용하는 예는 Cloud Storage에서 데이터 로드를 참조하세요.

다음 단계

  • 쿼리 실행에서 쿼리 작업을 시작하고 폴링하는 코드의 예를 참조하세요.
  • 작업 리소스 표현 작성에 대한 자세한 내용은 API 참조의 작업 개요 페이지를 참조하세요.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.