빠른 시작: SQL 사용

이 빠른 시작에서는 공개적으로 사용 가능한 Pub/Sub 주제를 쿼리하기 위해 SQL 구문을 작성하는 방법을 알아봅니다. SQL 쿼리는 Dataflow 파이프라인을 실행하고 파이프라인 결과는 BigQuery 테이블에 기록됩니다.

Dataflow SQL 작업을 실행하려면 Google Cloud Console, 로컬 머신에 설치된 Cloud SDK, Cloud Shell을 사용하면 됩니다. 이 예시에서는 Cloud Console 외에도 로컬 머신 또는 Cloud Shell을 사용해야 합니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Resource Manager, and Google Cloud Data Catalog API를 사용 설정합니다.

    API 사용 설정

Cloud SDK 설치 및 초기화

  • 운영체제에 맞는 Cloud SDK 패키지를 다운로드한 다음 Cloud SDK를 설치하고 구성합니다.

    인터넷 연결 상태에 따라 다운로드하는 데 다소 시간이 걸릴 수 있습니다.

BigQuery 데이터세트 만들기

이 빠른 시작에서 Dataflow SQL 파이프라인은 다음 섹션에서 만드는 BigQuery 테이블에 BigQuery 데이터 세트를 게시합니다.

  • 이름이 taxirides인 BigQuery 데이터 세트를 만듭니다.

    bq mk taxirides
    

파이프라인 실행

  • 공개적으로 사용 가능한 택시 탑승에 관한 Pub/Sub 주제의 데이터를 사용하여 분당 승객 수를 계산하는 Dataflow SQL 파이프라인을 실행합니다. 또한 이 명령어는 이름이 passengers_per_minute인 BigQuery 테이블을 만들어 데이터 출력을 저장합니다.

    gcloud dataflow sql query \
        --job-name=dataflow-sql-quickstart \
        --region=us-central1 \
        --bigquery-dataset=taxirides \
        --bigquery-table=passengers_per_minute \
    'SELECT
         TUMBLE_START("INTERVAL 60 SECOND") as period_start,
         SUM(passenger_count) AS pickup_count,
    FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime`
    WHERE
        ride_status = "pickup"
    GROUP BY
        TUMBLE(event_timestamp, "INTERVAL 60 SECOND")'
    

    Dataflow SQL 작업이 실행되기 시작하는 데 시간이 걸릴 수 있습니다.

다음은 Dataflow SQL 파이프라인에서 사용하는 값을 설명합니다.

  • dataflow-sql-quickstart: Dataflow 작업의 이름
  • us-central1: 작업이 실행되는 리전
  • taxirides: 싱크로 사용되는 BigQuery 데이터 세트의 이름
  • passengers_per_minute: BigQuery 테이블 이름
  • taxirides-realtime: 소스로 사용되는 Pub/Sub 주제 이름

SQL 명령어는 60초마다 탑승한 총 승객 수에 대해 Pub/Sub 주제 taxirides-realtime을 쿼리합니다. 이 공개 주제는 뉴욕시 택시 및 리무진 조합의 공개 데이터 세트를 기반으로 합니다.

결과 보기

  • 파이프라인이 실행 중인지 확인합니다.

    콘솔

    1. Cloud Console에서 Dataflow 작업 페이지로 이동합니다.

      작업으로 이동

    2. 작업 목록에서 dataflow-sql-quickstart를 클릭합니다.

    3. 작업 정보 패널에서 작업 상태 필드가 실행 중으로 설정되어 있는지 확인합니다.

      작업을 시작하는 데 몇 분 정도 걸릴 수 있습니다. 작업이 시작될 때까지 작업 상태큐에 추가됨으로 설정됩니다.

    4. 작업 그래프 탭에서 모든 단계가 실행 중인지 확인합니다.

      작업이 시작된 후 단계의 실행이 시작되기까지 몇 분 정도 걸릴 수 있습니다.

      2개의 복합 단계가 있는 Dataflow 작업 그래프 첫 번째 단계는 6분 45초 동안 실행되고 두 번째 단계는 1초 동안 실행됩니다.

    5. Cloud Console에서 BigQuery 페이지로 이동합니다.

      BigQuery로 이동

    6. 편집기에 다음 SQL 쿼리를 붙여넣고 실행을 클릭합니다.

      'SELECT *
      FROM taxirides.passengers_per_minute
      ORDER BY pickup_count DESC
      LIMIT 5'
      

      이 쿼리는 passengers_per_minute 테이블에서 가장 붐비는 간격을 반환합니다.

    gcloud

    1. 프로젝트에서 실행 중인 Dataflow 작업 목록을 가져옵니다.

      gcloud dataflow jobs list
      
    2. dataflow-sql-quickstart 작업에 대한 자세한 정보를 확인합니다.

      gcloud dataflow jobs describe JOB_ID
      

      JOB_ID를 프로젝트의 dataflow-sql-quickstart 작업 ID로 바꿉니다.

    3. passengers_per_minute 테이블에서 가장 붐비는 간격을 반환합니다.

      bq query \
      'SELECT *
      FROM taxirides.passengers_per_minute
      ORDER BY pickup_count DESC
      LIMIT 5'
      

정리

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Dataflow 작업을 취소하려면 작업 페이지로 이동합니다.

    작업으로 이동

  2. 작업 목록에서 dataflow-sql-quickstart를 클릭합니다.

  3. 중지 > 취소 > 작업 중지를 클릭합니다.

  4. taxirides 데이터 세트를 삭제합니다.

    bq rm taxirides
    
  5. 삭제를 확인하려면 y를 입력합니다.

다음 단계