Google Cloud에서 R을 사용한 데이터 과학: 탐색적 데이터 분석

Last reviewed 2024-07-22 UTC

이 문서에서는 Google Cloud에서 R을 사용하여 대규모 데이터 과학을 시작하는 방법을 보여줍니다. 이 튜토리얼은 RJupyter 노트북 사용 경험이 있고 SQL에 익숙한 사용자를 대상으로 작성되었습니다.

이 문서에서는 Vertex AI Workbench 인스턴스BigQuery를 사용하여 탐색 데이터 분석을 수행하는 방법을 중점적으로 설명합니다. GitHub의 Jupyter 노트북에서 함께 제공되는 코드를 확인할 수 있습니다.

개요

R은 통계 모델링에 가장 널리 사용되는 프로그래밍 언어 중 하나이며 데이터 과학자와 머신러닝(ML) 전문가를 아우르는 대규모 커뮤니티입니다. Comprehensive R Archive Network (CRAN) 오픈소스 저장소에 패키지가 20,000개 이상 있는 R에는 모든 통계 데이터 분석 애플리케이션, ML, 시각화용 도구가 있습니다. R은 문법 표현 및 포괄적인 데이터와 ML 라이브러리의 양으로 인해 지난 20년 동안 꾸준하게 성장하고 있습니다.

데이터 과학자로서 여러분은 R을 사용하여 역량을 어떻게 활용할 수 있는지, 그리고 데이터 과학을 위한 확장 가능한 완전 관리형 클라우드 서비스의 이점도 어떻게 활용할 수 있는지를 알아볼 수 있습니다.

아키텍처

이 워크스루에서는 Vertex AI Workbench 인스턴스를 데이터 과학 환경으로 사용하여 탐색적 데이터 분석 (EDA)을 수행합니다. 확장성과 경제성이 뛰어난 Google의 서버리스 클라우드 데이터 웨어하우스인 BigQuery에서 이 워크플로에서 추출하는 데이터에 R을 사용합니다. 데이터를 분석하고 처리하면 변환된 데이터가 추가 ML 작업을 위해 Cloud Storage에 저장됩니다. 이 흐름은 다음 다이어그램에 나와 있습니다.

BigQuery에서 Vertex AI Workbench로 전송되는 데이터의 흐름으로, R을 사용하여 데이터가 처리되고 추가 분석을 위해 결과가 Cloud Storage에 전송됩니다.

예시 데이터

이 문서의 예시 데이터는 BigQuery 뉴욕시 택시 운행 데이터 세트입니다. 이 공개 데이터 세트에는 매년 뉴욕시에서 발생하는 수백만 건의 택시 운행에 관한 정보가 포함되어 있습니다. 이 문서에서는 BigQuery의 bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022 테이블에 있는 2022년 데이터를 사용합니다.

이 문서에서는 EDA 및 R과 BigQuery를 사용한 시각화에 중점을 둡니다. 이 문서의 단계에 따라 이동에 관한 여러 요인을 고려하여 택시 요금 금액 (세금, 수수료, 기타 추가 항목을 제외한 금액)을 예측하는 ML 목표를 설정할 수 있습니다. 실제 모델 생성은 이 문서에서 다루지 않습니다.

Vertex AI Workbench

Vertex AI Workbench는 다음과 같은 기능을 갖춘 통합 JupyterLab 환경을 제공하는 서비스입니다.

  • 클릭 한 번으로 배포. 클릭 한 번으로 최신 머신러닝 및 데이터 과학 프레임워크로 사전 구성된 JupyterLab 인스턴스를 시작할 수 있습니다.
  • 필요에 따라 규모 조정. 작은 머신 구성(예: 이 문서에서와 같이 vCPU 4개, RAM 16GB)으로 시작할 수 있으며, 데이터가 한 머신에 비해 너무 커지면 CPU, RAM, GPU를 추가하여 규모를 확장할 수 있습니다.
  • Google Cloud 통합. Vertex AI Workbench 인스턴스는 BigQuery와 같은 Google Cloud 서비스와 통합됩니다. 이 통합을 통해 데이터 수집부터 사전 처리 및 탐색까지 간편하게 진행할 수 있습니다.
  • 사용량에 따른 청구. 최소 수수료나 선불 약정이 없이 자세한 내용은 Vertex AI Workbench 가격 책정을 참고하세요. 노트북 내에서 사용하는 Google Cloud 리소스 (예: BigQuery, Cloud Storage)에 대한 비용도 지불합니다.

Vertex AI Workbench 인스턴스 노트북은 Deep Learning VM Image에서 실행됩니다. 이 문서에서는 R 4.3을 사용하는 Vertex AI Workbench 인스턴스 만들기를 지원합니다.

R을 사용하여 BigQuery로 작업

BigQuery는 인프라 관리가 필요하지 않으므로 의미 있는 정보를 찾는 데 집중할 수 있습니다. BigQuery의 풍부한 SQL 분석 기능을 사용하여 대량의 데이터를 대규모로 분석하고 ML용 데이터 세트를 준비할 수 있습니다.

R을 사용하여 BigQuery 데이터를 쿼리하려면 오픈소스 R 라이브러리인 bigrquery를 사용하면 됩니다. bigrquery 패키지는 BigQuery를 기반으로 다음과 같은 추상화 수준을 제공합니다.

  • 하위 수준 API는 기본 BigQuery REST API를 통해 씬 래퍼를 제공합니다.
  • DBI 인터페이스는 하위 수준의 API를 래핑하며 이 인터페이스를 사용하면 다른 데이터베이스 시스템으로 작업과 비슷하게 BigQuery로 작업할 수 있습니다. 이 방식은 BigQuery에서 SQL 쿼리를 실행하거나 100MB 미만을 업로드하려는 경우에 가장 편리한 레이어입니다.
  • dbplir 인터페이스를 사용하면 BigQuery 테이블을 메모리 내 데이터 프레임처럼 취급할 수 있습니다. SQL을 작성하는 대신 dbplyr가 작성하게 하려는 경우 가장 편리한 레이어입니다.

이 문서에서는 DBI 또는 dbplyr을 요구하지 않고 bigrquery의 하위 수준 API를 사용합니다.

목표

  • R을 지원하는 Vertex AI Workbench 인스턴스를 만듭니다.
  • bigrquery R 라이브러리를 사용하여 BigQuery에서 데이터를 쿼리하고 분석하기
  • Cloud Storage에서 ML용 데이터를 준비하고 저장하기

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

Vertex AI Workbench 인스턴스 생성

첫 번째 단계는 이 둘러보기에 사용할 Vertex AI Workbench 인스턴스를 만드는 것입니다.

  1. Google Cloud 콘솔에서 Workbench 페이지로 이동합니다.

    Workbench로 이동

  2. 인스턴스 탭에서 새로 만들기를 클릭합니다.

  3. 새 인스턴스 창에서 만들기를 클릭합니다. 이 둘러보기에서는 모든 기본값을 유지합니다.

    Vertex AI Workbench 인스턴스를 시작하는 데 2~3분이 걸릴 수 있습니다. 준비가 되면 인스턴스가 노트북 인스턴스 창에 자동으로 표시되고 인스턴스 이름 옆에 JupyterLab 열기 링크가 표시됩니다. 몇 분 후에도 JupyterLab을 여는 링크가 목록에 표시되지 않으면 페이지를 새로고침합니다.

JupyterLab 열기 및 R 설치

노트북에서 둘러보기를 완료하려면 JupyterLab 환경을 열고 R을 설치한 다음 vertex-ai-samples GitHub 저장소를 클론한 후 노트북을 열어야 합니다.

  1. 인스턴스 목록에서 Jupyterlab 열기를 클릭합니다. 그러면 브라우저의 다른 탭에서 JupyterLab 환경이 열립니다.

  2. JupyterLab 환경에서  새 런처를 클릭한 다음 런처 탭에서 터미널을 클릭합니다.

  3. 터미널 창에서 R을 설치합니다.

    conda create -n r
    conda activate r
    conda install -c r r-essentials r-base=4.3.2
    

    설치 중에 계속 진행하라는 메시지가 표시될 때마다 y를 입력합니다. 설치를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 설치가 완료되면 출력은 다음과 비슷합니다.

    done
    Executing transaction: done
    ® jupyter@instance-INSTANCE_NUMBER:~$
    

    여기서 INSTANCE_NUMBER는 Vertex AI Workbench 인스턴스에 할당된 고유한 번호입니다.

  4. 터미널에서 명령어 실행이 완료되면 브라우저 페이지를 새로고침한 다음  새 런처를 클릭하여 런처를 엽니다.

    실행기 탭에는 노트북 또는 콘솔에서 R을 실행하고 R 파일을 만드는 옵션이 표시됩니다.

  5. 터미널 탭을 클릭한 다음 vertex-ai-samples GitHub 저장소를 클론합니다.

    git clone https://github.com/GoogleCloudPlatform/vertex-ai-samples.git
    

    명령어가 완료되면 JupyterLab 환경의 파일 브라우저 창에 vertex-ai-samples 폴더가 표시됩니다.

  6. 파일 브라우저에서 vertex-ai-samples>notebooks >community>exploratory_data_analysis를 엽니다. eda_with_r_and_bigquery.ipynb 노트북이 표시됩니다.

노트북 열기 및 R 설정

  1. 파일 브라우저에서 eda_with_r_and_bigquery.ipynb 노트북을 엽니다.

    이 노트북에서는 R 및 BigQuery를 사용한 탐색적 데이터 분석을 살펴봅니다. 이 문서의 나머지 부분에서는 노트북에서 작업하고 Jupyter 노트북에 표시되는 코드를 실행합니다.

  2. 노트북에서 사용 중인 R 버전을 확인합니다.

    version
    

    출력의 version.string 필드에 이전 섹션에서 설치한 R version 4.3.2가 표시됩니다.

  3. 현재 세션에서 아직 사용할 수 없는 경우 필요한 R 패키지를 확인하고 설치합니다.

    # List the necessary packages
    needed_packages <- c("dplyr", "ggplot2", "bigrquery")
    
    # Check if packages are installed
    installed_packages <- .packages(all.available = TRUE)
    missing_packages <- needed_packages[!(needed_packages %in% installed_packages)]
    
    # If any packages are missing, install them
    if (length(missing_packages) > 0) {
      install.packages(missing_packages)
    }
    
  4. 필요한 패키지를 로드합니다.

    # Load the required packages
    lapply(needed_packages, library, character.only = TRUE)
    
  5. 대역 외 인증을 사용하여 bigrquery를 인증합니다.

    bq_auth(use_oob = True)
    
  6. [YOUR-PROJECT-ID]을 이름으로 바꿔 이 노트북에 사용할 프로젝트의 이름을 설정합니다.

    # Set the project ID
    PROJECT_ID <- "[YOUR-PROJECT-ID]"
    
  7. [YOUR-BUCKET-NAME]을 전역적으로 고유한 이름으로 바꿔 출력 데이터를 저장할 Cloud Storage 버킷의 이름을 설정합니다.

    BUCKET_NAME <- "[YOUR-BUCKET-NAME]"
    
  8. 나중에 노트북에서 생성될 플롯의 기본 높이와 너비를 설정합니다.

    options(repr.plot.height = 9, repr.plot.width = 16)
    

BigQuery에서 데이터 쿼리

이 노트북 섹션에서는 BigQuery SQL 문을 R로 실행한 결과를 읽고 데이터를 미리 살펴봅니다.

  1. 이동 샘플에 대한 몇 가지 가능한 예측 변수와 타겟 예측 변수를 추출하는 BigQuery SQL 문을 만듭니다. 다음 쿼리는 분석을 위해 읽고 있는 필드에서 일부 이상치 또는 무의미한 값을 필터링합니다.

    sql_query_template <- "
        SELECT
          TIMESTAMP_DIFF(dropoff_datetime, pickup_datetime, MINUTE) AS trip_time_minutes,
    
          passenger_count,
    
          ROUND(trip_distance, 1) AS trip_distance_miles,
    
          rate_code,
          /* Mapping from rate code to type from description column in BigQuery table schema */
          (CASE
            WHEN rate_code = '1.0'
              THEN 'Standard rate'
            WHEN rate_code = '2.0'
              THEN 'JFK'
            WHEN rate_code = '3.0'
              THEN 'Newark'
            WHEN rate_code = '4.0'
              THEN 'Nassau or Westchester'
            WHEN rate_code = '5.0'
              THEN 'Negotiated fare'
            WHEN rate_code = '6.0'
              THEN 'Group ride'
            /* Several NULL AND some '99.0' values go here */
            ELSE 'Unknown'
            END)
            AS rate_type,
    
          fare_amount,
    
          CAST(ABS(FARM_FINGERPRINT(
            CONCAT(
              CAST(trip_distance AS STRING),
              CAST(fare_amount AS STRING)
              )
            ))
            AS STRING)
            AS key
    
        FROM
          `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022`
    
        /* Filter out some outlier or hard to understand values */
        WHERE
          (TIMESTAMP_DIFF(dropoff_datetime, pickup_datetime, MINUTE)
            BETWEEN 0.01 AND 120)
          AND
          (passenger_count BETWEEN 1 AND 10)
          AND
          (trip_distance BETWEEN 0.01 AND 100)
          AND
          (fare_amount BETWEEN 0.01 AND 250)
    
        LIMIT %s
    "
    

    key 열은 trip_distancefare_amount 열의 연결된 값을 기반으로 생성된 행 식별자입니다.

  2. 쿼리를 실행하고 동일한 데이터를 데이터 프레임과 유사한 인메모리 tibble로 검색합니다.

    sample_size <- 10000
    
    sql_query <- sprintf(sql_query_template, sample_size)
    
    taxi_trip_data <- bq_table_download(
        bq_project_query(
            PROJECT_ID,
            query = sql_query
        )
    )
    
  3. 검색된 결과 보기:

    head(taxi_trip_data)
    

    출력은 다음 이미지와 유사한 표입니다.

    택시 이동 데이터의 처음 6개 행

    결과에는 다음과 같은 이동 데이터 열이 표시됩니다.

    • trip_time_minutes 정수
    • passenger_count 정수
    • trip_distance_miles double
    • rate_code
    • rate_type
    • fare_amount double
    • key
  4. 각 열의 행 수와 데이터 유형을 봅니다.

    str(taxi_trip_data)
    

    출력은 다음과 비슷합니다.

    tibble [10,000 x 7] (S3: tbl_df/tbl/data.frame)
    $ trip_time_minutes  : int [1:10000] 52 19 2 7 14 16 1 2 2 6 ...
    $ passenger_count    : int [1:10000] 1 1 1 1 1 1 1 1 3 1 ...
    $ trip_distance_miles: num [1:10000] 31.3 8.9 0.4 0.9 2 0.6 1.7 0.4 0.5 0.2 ...
    $ rate_code          : chr [1:10000] "5.0" "5.0" "5.0" "5.0" ...
    $ rate_type          : chr [1:10000] "Negotiated fare" "Negotiated fare" "Negotiated fare" "Negotiated fare" ...
    $ fare_amount        : num [1:10000] 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 ...
    $ key                : chr [1:10000] "1221969315200336084" 5007772749405424948" "3727452358632142755" "77714841168471205370" ...
    
  5. 검색된 데이터의 요약 보기:

    summary(taxi_trip_data)
    

    출력은 다음과 비슷합니다.

    trip_time_minutes passenger_count trip_distance_miles  rate_code
    Min.   :  1.00    Min.   :1.000   Min.   : 0.000      Length:10000
    1st Qu.: 20.00    1st Qu.:1.000   1st Qu.: 3.700      Class :character
    Median : 24.00    Median :1.000   Median : 4.800      Mode  :character
    Mean   : 30.32    Mean   :1.465   Mean   : 9.639
    3rd Qu.: 39.00    3rd Qu.:2.000   3rd Qu.:17.600
    Max.   :120.00    Max.   :9.000   Max.   :43.700
    rate_type          fare_amount         key
    Length:10000       Min.   :  0.01   Length:10000
    Class :character   1st Qu.: 16.50   Class :character
    Mode  :character   Median : 16.50   Mode  :character
                      Mean   : 31.22
                      3rd Qu.: 52.00
                      Max.   :182.50
    

ggplot2를 사용하여 데이터 시각화

이 노트북 섹션에서는 R의 ggplot2 라이브러리를 사용하여 예시 데이터 세트의 일부 변수를 살펴봅니다.

  1. 히스토그램을 사용하여 fare_amount 값의 분포를 표시합니다.

    ggplot(
        data = taxi_trip_data,
        aes(x = fare_amount)
        ) +
    geom_histogram(bins = 100)
    

    결과 그래프는 다음 이미지의 그래프와 유사합니다.

    요금 금액 20 및 52에서 급증하는 요금 금액 분포를 보여주는 그래프입니다.

  2. 분산형 그래프를 사용하여 trip_distancefare_amount의 관계를 표시합니다.

    ggplot(
        data = taxi_trip_data,
        aes(x = trip_distance_miles, y = fare_amount)
        ) +
    geom_point() +
    geom_smooth(method = "lm")
    

    결과 그래프는 다음 이미지의 그래프와 유사합니다.

    직선 회귀 보간 선이 포함된 이동 거리와 요금 금액 간의 관계에 대한 산포도입니다.

R에서 BigQuery의 데이터 처리

대규모 데이터 세트로 작업하는 경우 BigQuery에서 최대한 많은 분석 (집계, 필터링, 조인, 열 계산 등)을 수행한 후 결과를 검색하는 것이 좋습니다. R에서 이러한 태스크를 수행하는 것은 보다 비효율적입니다. 분석에 BigQuery를 사용하면 BigQuery의 확장성과 성능을 활용할 수 있고 반환된 결과가 R의 메모리에 적합한지 확인할 수 있습니다.

  1. 노트북에서 선택한 열의 각 값에 대한 이동 횟수와 평균 요금 금액을 찾는 함수를 만듭니다.

    get_distinct_value_aggregates <- function(column) {
        query <- paste0(
            'SELECT ',
              column,
              ',
              COUNT(1) AS num_trips,
              AVG(fare_amount) AS avg_fare_amount
    
            FROM
              `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022`
    
            WHERE
              (TIMESTAMP_DIFF(dropoff_datetime, pickup_datetime, MINUTE)
                BETWEEN 0.01 AND 120)
              AND
              (passenger_count BETWEEN 1 AND 10)
              AND
              (trip_distance BETWEEN 0.01 AND 100)
              AND
              (fare_amount BETWEEN 0.01 AND 250)
    
            GROUP BY 1
            '
            )
    
        bq_table_download(
            bq_project_query(
                PROJECT_ID,
                query = query
            )
        )
    }
    
  2. BigQuery의 타임스탬프 기능을 사용하여 정의된 trip_time_minutes 열을 사용하여 함수를 호출합니다.

    df <- get_distinct_value_aggregates(
      'TIMESTAMP_DIFF(dropoff_datetime, pickup_datetime, MINUTE) AS trip_time_minutes')
    
    ggplot(
        data = df,
        aes(x = trip_time_minutes, y = num_trips)
        ) +
    geom_line()
    
    ggplot(
        data = df,
        aes(x = trip_time_minutes, y = avg_fare_amount)
        ) +
    geom_line()
    

    노트북에 두 개의 그래프가 표시됩니다. 첫 번째 그래프는 이동 시간(분)별 이동 횟수를 보여줍니다. 두 번째 그래프는 이동 시간별 이동의 평균 요금 금액을 보여줍니다.

    첫 번째 ggplot 명령어의 출력은 다음과 같으며, 이동 거리 (분)별 이동 횟수를 보여줍니다.

    곡선은 이동 시간(분) 수가 0~10분에서 가장 높고 이동 시간이 25분에 가까워질수록 급격히 감소함을 보여줍니다.

    두 번째 ggplot 명령어의 출력은 다음과 같으며, 이동 시간별 이동의 평균 요금 금액을 보여줍니다.

    곡선은 평균 요금이 0분에서 50분까지 꾸준히 증가한 후 50분에서 125분까지는 더 느린 속도로 증가함을 보여줍니다.

    데이터의 다른 필드가 포함된 더 많은 시각화 예시를 보려면 노트북을 참고하세요.

Cloud Storage에 데이터를 CSV 파일로 저장

다음 작업은 BigQuery에서 추출된 데이터를 추가 ML 작업에 사용할 수 있도록 Cloud Storage에 CSV 파일로 저장하는 것입니다.

  1. 노트북에서 BigQuery의 학습 및 평가 데이터를 R로 로드합니다.

    # Prepare training and evaluation data from BigQuery
    sample_size <- 10000
    
    sql_query <- sprintf(sql_query_template, sample_size)
    
    # Split data into 75% training, 25% evaluation
    train_query <- paste('SELECT * FROM (', sql_query,
      ') WHERE MOD(CAST(key AS INT64), 100) <= 75')
    eval_query <- paste('SELECT * FROM (', sql_query,
      ') WHERE MOD(CAST(key AS INT64), 100) > 75')
    
    # Load training data to data frame
    train_data <- bq_table_download(
        bq_project_query(
            PROJECT_ID,
            query = train_query
        )
    )
    
    # Load evaluation data to data frame
    eval_data <- bq_table_download(
        bq_project_query(
            PROJECT_ID,
            query = eval_query
        )
    )
    
  2. 각 데이터 세트의 관측 수를 확인합니다.

    print(paste0("Training instances count: ", nrow(train_data)))
    
    print(paste0("Evaluation instances count: ", nrow(eval_data)))
    

    총 인스턴스의 약 75% 는 학습 중이고 나머지 인스턴스의 약 25% 는 평가 중입니다.

  3. 데이터를 로컬 CSV 파일에 씁니다.

    # Write data frames to local CSV files, with headers
    dir.create(file.path('data'), showWarnings = FALSE)
    
    write.table(train_data, "data/train_data.csv",
      row.names = FALSE, col.names = TRUE, sep = ",")
    
    write.table(eval_data, "data/eval_data.csv",
      row.names = FALSE, col.names = TRUE, sep = ",")
    
  4. 시스템에 전달되는 gsutil 명령어를 래핑하여 CSV 파일을 Cloud Storage에 업로드합니다.

    # Upload CSV data to Cloud Storage by passing gsutil commands to system
    gcs_url <- paste0("gs://", BUCKET_NAME, "/")
    
    command <- paste("gsutil mb", gcs_url)
    
    system(command)
    
    gcs_data_dir <- paste0("gs://", BUCKET_NAME, "/data")
    
    command <- paste("gsutil cp data/*_data.csv", gcs_data_dir)
    
    system(command)
    
    command <- paste("gsutil ls -l", gcs_data_dir)
    
    system(command, intern = TRUE)
    

    Cloud Storage JSON API를 호출하는 googleCloudStorageR 라이브러리를 사용하여 CSV 파일을 Cloud Storage에 업로드할 수도 있습니다.

bigrquery를 사용하여 R의 데이터를 BigQuery에 다시 쓸 수도 있습니다. BigQuery에 다시 쓰기는 일반적으로 일부 사전 처리를 완료하거나 추가 분석에 사용할 결과를 생성한 후에 실행됩니다.

삭제

이 문서에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 관련 리소스를 삭제해야 합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 만든 프로젝트를 삭제하는 것입니다. 여러 아키텍처, 튜토리얼 또는 빠른 시작을 살펴보려는 경우 프로젝트를 재사용하면 프로젝트 할당량 한도 초과를 방지할 수 있습니다.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

다음 단계

  • bigrquery 문서에서 R 노트북의 BigQuery 데이터를 사용하는 방법 알아보기
  • ML 규칙에서 ML 엔지니어링 권장사항 알아보기
  • Google Cloud의 AI 및 ML 워크로드와 관련된 원칙 및 권장사항에 관한 개요는 아키텍처 프레임워크의 AI 및 ML 관점을 참고하세요.
  • 그 밖의 참조 아키텍처, 다이어그램, 튜토리얼, 권장사항을 알아보려면 클라우드 아키텍처 센터를 확인하세요.

참여자

저자: 알록 파타니 | Developer Advocate

기타 참여자: