1. Giới thiệu
Trong lớp học lập trình này, bạn sẽ khám phá các chức năng của Hồ dữ liệu hợp nhất trên Google Cloud. Bạn sẽ tương tác với các tập dữ liệu công khai được phân phát thông qua Danh mục REST của Apache Iceberg trên BigLake, sau đó áp dụng các chức năng AI của Google Cloud cho cả dữ liệu có cấu trúc và dữ liệu không có cấu trúc.
Bạn sẽ truy vấn tập dữ liệu Taxi ở Thành phố New York (NYC) phiên bản cũ bằng Apache Iceberg, tìm hiểu về tính năng Time Travel (Du hành thời gian) để kiểm tra các thay đổi về dữ liệu, sau đó sử dụng BigQuery ML và Gemini để chạy các mô hình AI trên dữ liệu của bạn.
Bạn sẽ thực hiện
- Sử dụng Google Cloud Serverless cho Apache Spark để truy vấn tập dữ liệu công khai Apache Iceberg được lưu trữ trên BigLake.
- Truy vấn dữ liệu có cấu trúc ở định dạng Apache Iceberg.
- Minh hoạ tính năng Du hành thời gian trong Apache Iceberg.
- Sử dụng BigQuery ML để huấn luyện một mô hình dự đoán trên dữ liệu có cấu trúc.
- Tạo Bảng đối tượng BigLake (Dữ liệu không có cấu trúc) và sử dụng Gemini để phân tích hình ảnh.
Bạn cần có
- Một trình duyệt web như Chrome.
- Một dự án trên Google Cloud đã bật tính năng thanh toán.
Chi phí và thời lượng dự kiến
- Thời gian hoàn thành: Khoảng 45 phút.
- Chi phí ước tính: < 20.000 VND. Chúng tôi sử dụng các tập dữ liệu công khai và truy vấn không máy chủ để giảm chi phí.
2. Thiết lập và yêu cầu
Ở bước này, bạn sẽ chuẩn bị môi trường và bật các API cần thiết.
Khởi động Cloud Shell
Bạn sẽ chạy hầu hết các lệnh từ Google Cloud Shell.
- Nhấp vào Kích hoạt Cloud Shell ở đầu bảng điều khiển Cloud.
- Xác minh hoạt động xác thực:
gcloud auth list - Xác nhận dự án của bạn:
gcloud config get project - Nếu chưa đặt dự án, hãy đặt dự án bằng mã dự án của bạn:
gcloud config set project <YOUR_PROJECT_ID>
Bật API
Chạy lệnh sau để bật các API bắt buộc cho BigQuery, Cloud Resource Manager và Vertex AI:
gcloud services enable \
bigquery.googleapis.com \
aiplatform.googleapis.com \
cloudresourcemanager.googleapis.com
Định cấu hình môi trường và tạo vùng chứa phần phụ thuộc
- Đặt các biến môi trường trong thiết bị đầu cuối:
export PROJECT_ID=$(gcloud config get project) export REGION=us-central1 export DEPS_BUCKET=$PROJECT_ID-deps-bucket - Tạo bộ chứa Cloud Storage cho các phần phụ thuộc. Các tập lệnh PySpark được tải lên tại đây vào thời điểm gửi công việc:
gcloud storage buckets create gs://$DEPS_BUCKET --location=$REGION
3. Kết nối với Danh mục công khai Apache Iceberg
Trong bước này, bạn sẽ kết nối với một Danh mục Apache Iceberg trực tiếp, cấp sản xuất được lưu trữ trên BigLake của Google Cloud.
Chạy Spark SQL bằng Serverless cho Apache Spark Batch CLI
Chúng ta sẽ sử dụng Google Cloud Serverless cho Apache Spark để chạy các công việc PySpark mà không cần quản lý cơ sở hạ tầng. Chúng ta sẽ định cấu hình để trỏ đến Danh mục REST BigLake công khai.
- Xác định các thuộc tính Danh mục REST BigLake để tránh lặp lại các thuộc tính này.Cấu hình này cho Spark biết:
- Để sử dụng các thư viện
iceberg-spark-runttimevàiceberg-gcp-bundle. - Để định cấu hình một danh mục có tên là
my_catalogbằng cách sử dụng điểm cuối Danh mục BigLake REST. - Sử dụng Google Cloud Storage (GCS) để đọc tệp dữ liệu thay vì hệ thống tệp cục bộ mặc định.
- Để đặt danh mục
my_catalognày làm mặc định cho phiên của chúng ta. - Để sử dụng thông tin đăng nhập được cung cấp nhằm tăng cường tính bảo mật và đơn giản hoá quyền truy cập dữ liệu.
export METASTORE_PROPERTIES="^|^spark.jars.packages=org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0,org.apache.iceberg:iceberg-gcp-bundle:1.10.0|\ spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog|\ spark.sql.catalog.my_catalog.type=rest|\ spark.sql.catalog.my_catalog.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog|\ spark.sql.catalog.my_catalog.warehouse=gs://biglake-public-nyc-taxi-iceberg|\ spark.sql.catalog.my_catalog.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO|\ spark.sql.catalog.my_catalog.header.x-goog-user-project=$PROJECT_ID|\ spark.sql.catalog.my_catalog.header.X-Iceberg-Access-Delegation=vended-credentials|\ spark.sql.catalog.my_catalog.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager|\ spark.sql.defaultCatalog=my_catalog|\ spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions|\ spark.log.level=ERROR" - Để sử dụng các thư viện
- Tạo một tệp truy vấn kiểm thử đơn giản:
cat <<EOF > test.py from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() spark.sql("SHOW TABLES IN public_data").show() EOF - Gửi lệnh xử lý theo lô:
Bạn sẽ thấy kết quả tương tự như sau:gcloud dataproc batches submit pyspark \ --project=$PROJECT_ID \ --region=$REGION \ --version=2.3 \ --properties="$METASTORE_PROPERTIES" \ --deps-bucket=gs://$DEPS_BUCKET \ test.py+-----------+----------------+-----------+ | namespace| tableName|isTemporary| +-----------+----------------+-----------+ |public_data| nyc_taxicab| false| |public_data|nyc_taxicab_2021| false| +-----------+----------------+-----------+
4. Truy vấn dữ liệu có cấu trúc Iceberg
Sau khi kết nối, bạn sẽ có toàn quyền truy cập SQL vào các tập dữ liệu. Chúng ta sẽ truy vấn tập dữ liệu Taxi ở Thành phố New York được mô hình hoá dưới dạng bảng Iceberg.
Chạy truy vấn tổng hợp tiêu chuẩn
Tạo một tệp có tên query.py:
cat <<EOF > query.py
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
query = """
SELECT
passenger_count,
COUNT(1) AS num_trips,
ROUND(AVG(total_amount), 2) AS avg_fare,
ROUND(AVG(trip_distance), 2) AS avg_distance
FROM public_data.nyc_taxicab
WHERE data_file_year = 2021 AND passenger_count > 0
GROUP BY passenger_count
ORDER BY num_trips DESC
"""
spark.sql(query).show()
EOF
Sau đó, hãy gửi yêu cầu bằng cách sử dụng Serverless cho Apache Spark:
gcloud dataproc batches submit pyspark \
--project=$PROJECT_ID \
--region=$REGION \
--version=2.3 \
--properties="$METASTORE_PROPERTIES" \
--deps-bucket=gs://$DEPS_BUCKET \
query.py
Bạn sẽ thấy kết quả tương tự như sau trong bảng điều khiển:
+---------------+---------+--------+------------+ |passenger_count|num_trips|avg_fare|avg_distance| +---------------+---------+--------+------------+ | 1| 21508009| 18.82| 3.03| | 2| 4424746| 20.22| 3.40| | 3| 1164846| 19.84| 3.27| | 5| 718282| 18.88| 3.07| | 4| 466485| 20.61| 3.44| | 6| 452467| 18.97| 3.11| | 7| 78| 65.24| 3.71| | 8| 49| 57.39| 5.88| | 9| 35| 73.26| 6.20| | 96| 1| 17.00| 2.00| | 112| 1| 15.00| 2.00| +---------------+---------+--------+------------+
Tại sao nên sử dụng Apache Iceberg ở đây?
- Phân vùng cắt tỉa: Bộ lọc truy vấn trên
data_file_year = 2021. Iceberg cho phép công cụ này bỏ qua hoàn toàn việc quét dữ liệu từ những năm khác. - Tính linh hoạt của công cụ: Bạn có thể chạy công cụ này trong Spark, Trino hoặc BigQuery mà không cần sao chép dữ liệu!
5. Du hành thời gian trong Apache Iceberg
Một trong những tính năng mạnh mẽ nhất của Iceberg là Time Travel (Du hành thời gian). Nhờ đó, bạn có thể truy vấn dữ liệu như dữ liệu ở phiên bản hoặc ảnh chụp nhanh trước đây.
Xem nhật ký về bảng
Tạo một tệp có tên history.py:
cat <<EOF > history.py
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark.sql("SELECT * FROM public_data.nyc_taxicab.history").show()
EOF
Sau đó gửi:
gcloud dataproc batches submit pyspark \
--project=$PROJECT_ID \
--region=$REGION \
--version=2.3 \
--properties="$METASTORE_PROPERTIES" \
--deps-bucket=gs://$DEPS_BUCKET \
history.py
Bạn sẽ thấy kết quả tương tự như sau trong bảng điều khiển:
+--------------------+-------------------+-------------------+-------------------+ | made_current_at| snapshot_id| parent_id|is_current_ancestor| +--------------------+-------------------+-------------------+-------------------+ |2026-01-07 21:32:...|6333415779680505547| NULL| true| |2026-01-07 21:34:...|1840345522877675925|6333415779680505547| true| |2026-01-07 21:36:...|7203554539964460256|1840345522877675925| true| |2026-01-07 21:38:...|4573466015237516024|7203554539964460256| true| |2026-01-07 21:40:...|3353190952148867790|4573466015237516024| true| |2026-01-07 21:42:...|1335547378580631681|3353190952148867790| true| |2026-01-07 21:44:...|8203141258229894239|1335547378580631681| true| |2026-01-07 21:46:...|1597048231706307813|8203141258229894239| true| |2026-01-07 21:48:...|6247811509231462655|1597048231706307813| true| |2026-01-07 21:50:...|2527184310045633322|6247811509231462655| true| |2026-01-07 21:52:...|2512764101237223642|2527184310045633322| true| |2026-01-07 21:52:...|7045957533358062548|2512764101237223642| true| |2026-01-07 21:53:...| 531753237516076726|7045957533358062548| true| |2026-01-07 21:53:...|4184653573199718274| 531753237516076726| true| |2026-01-07 21:54:...|5125223829492177301|4184653573199718274| true| |2026-01-07 21:54:...|6844673237417600305|5125223829492177301| true| |2026-01-07 21:54:...|6634828203344518093|6844673237417600305| true| |2026-01-07 21:55:...|7637728273407236194|6634828203344518093| true| |2026-01-07 21:55:...|3424071684958740192|7637728273407236194| true| |2026-01-07 21:55:...|1743746294196424254|3424071684958740192| true| +--------------------+-------------------+-------------------+-------------------+
Bạn sẽ thấy các hàng đại diện cho nhiều mã nhận dạng bản chụp nhanh và thời điểm các bản chụp nhanh đó được xác nhận.
So sánh số hàng hiện tại với số hàng trước đây
Tạo một tệp có tên timetravel.py:
cat <<EOF > timetravel.py
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
query = """
SELECT 'Current State' AS version, COUNT(*) AS count FROM public_data.nyc_taxicab
UNION ALL
SELECT 'Past State' AS version, COUNT(*) AS count FROM public_data.nyc_taxicab VERSION AS OF 4573466015237516024
"""
spark.sql(query).show()
EOF
Sau đó gửi:
gcloud dataproc batches submit pyspark \
--project=$PROJECT_ID \
--region=$REGION \
--version=2.3 \
--properties="$METASTORE_PROPERTIES" \
--deps-bucket=gs://$DEPS_BUCKET \
timetravel.py
Bạn sẽ thấy kết quả tương tự như sau trong bảng điều khiển:
+-------------+----------+ | version| count| +-------------+----------+ |Current State|1293069366| | Past State| 72878594| +-------------+----------+
Điều này đảm bảo bạn có thể kiểm tra các thay đổi về dữ liệu theo thời gian.
6. AI có cấu trúc bằng BigQuery ML
Giờ đây, sau khi khám phá dữ liệu Iceberg, hãy sử dụng các tính năng AI của BigQuery! Vì danh mục Iceberg công khai ở trạng thái chỉ đọc, nên chúng ta có thể dùng BigQuery để huấn luyện một mô hình trong không gian làm việc của mình bằng cách đọc từ các bảng công khai.
Tạo một tập dữ liệu cục bộ
Trước tiên, hãy tạo một tập dữ liệu trong dự án để lưu trữ mô hình AI bằng CLI bq:
bq mk --location=$REGION --project_id=$PROJECT_ID iceberg_ai
Đào tạo mô hình hồi quy tuyến tính
Bây giờ, bạn sẽ huấn luyện một mô hình Hồi quy tuyến tính bằng cách sử dụng bảng Iceberg công khai của BigLake.
Tạo một tệp truy vấn và huấn luyện mô hình bằng cách sử dụng bq query:
cat <<'EOF' > train_model.sql
CREATE OR REPLACE MODEL `iceberg_ai.predict_fare`
OPTIONS(model_type='LINEAR_REG', input_label_cols=['fare_amount']) AS
SELECT fare_amount, passenger_count, CAST(trip_distance AS FLOAT64) AS trip_distance
FROM `bigquery-public-data`.`biglake-public-nyc-taxi-iceberg`.public_data.nyc_taxicab
WHERE fare_amount > 0 AND trip_distance > 0 AND RAND() < 0.01; -- Using 1% of data to downsample
EOF
bq query --location=$REGION --use_legacy_sql=false < train_model.sql
Dự đoán bằng Mô hình
Giờ đây, sau khi huấn luyện mô hình, bạn có thể dùng mô hình này để dự đoán số tiền vé cho các chuyến đi mới bằng cách sử dụng ML.PREDICT.
Tạo một tệp truy vấn và chạy quy trình dự đoán bằng bq query:
cat <<'EOF' > predict_fare.sql
SELECT
predicted_fare_amount, passenger_count, trip_distance
FROM
ML.PREDICT(MODEL `iceberg_ai.predict_fare`,
(
SELECT 2 AS passenger_count, 5.0 AS trip_distance
)
);
EOF
bq query --location=$REGION --use_legacy_sql=false < predict_fare.sql
Bạn sẽ thấy kết quả tương tự như dưới đây:
+-----------------------+-----------------+---------------+ | predicted_fare_amount | passenger_count | trip_distance | +-----------------------+-----------------+---------------+ | 14.12252095150709 | 2 | 5.0 | +-----------------------+-----------------+---------------+
7. AI không có cấu trúc với BigLake
Dữ liệu không chỉ là hàng và cột. Unified Data Lakehouse cũng xử lý dữ liệu không có cấu trúc (hình ảnh, tệp PDF). Hãy sử dụng Bảng đối tượng và Đối tượng tham chiếu để truy vấn dữ liệu không có cấu trúc.
Bảng đối tượng là bảng bên ngoài chỉ cho phép đọc trong BigQuery, liệt kê các đối tượng trong một đường dẫn Cloud Storage. Mỗi hàng đại diện cho một tệp, với các cột cho siêu dữ liệu như uri, size và một cột ref đặc biệt chứa ObjectRef.
Tham chiếu đối tượng (ObjectRef) trỏ đến dữ liệu thực tế của một tệp duy nhất. Các hàm BigQuery ML hiện đại (như AI.GENERATE hoặc AI.AGG) sử dụng ObjectRef để đọc nội dung tệp (hình ảnh, âm thanh hoặc văn bản) để phân tích mà không cần tải các byte vào một bảng chuẩn.
Tạo tập dữ liệu cho AI không có cấu trúc
Trước tiên, hãy tạo một tập dữ liệu thứ hai trong dự án để lưu trữ Bảng đối tượng bằng cách sử dụng CLI bq trong US nhiều khu vực:
bq mk --location=US --project_id=$PROJECT_ID iceberg_object_ai
Tạo kết nối bên ngoài
Để truy vấn dữ liệu được lưu trữ trong Cloud Storage (cả Bảng đối tượng và dữ liệu không có cấu trúc) từ BigQuery, bạn cần tạo một Kết nối bên ngoài.
Chạy lệnh sau trong Cloud Shell để tạo một kết nối Tài nguyên trên đám mây:
bq mk --connection --project_id=$PROJECT_ID --location=US --connection_type=CLOUD_RESOURCE my-conn
Tìm mã tài khoản dịch vụ được tạo cho mối kết nối của bạn:
CONNECTION_SA=$(bq show --format=json --project_id=$PROJECT_ID --connection $PROJECT_ID.us.my-conn | jq -r '.serviceAccountId // .cloudResource.serviceAccountId')
Cấp cho Tài khoản dịch vụ các vai trò Người dùng Vertex AI và Người xem đối tượng lưu trữ để tài khoản này có thể gọi các mô hình Gemini và đọc dữ liệu GCS:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$CONNECTION_SA" \
--role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$CONNECTION_SA" \
--role="roles/storage.objectViewer"
Tạo Bảng đối tượng
Chúng ta sẽ sử dụng kết nối bên ngoài my-conn đã tạo ở phần trước để truy cập vào dữ liệu không có cấu trúc. Tạo một tệp truy vấn và tạo Bảng đối tượng bằng bq query:
cat <<'EOF' > create_object_table.sql
CREATE EXTERNAL TABLE `iceberg_object_ai.sample_images`
WITH CONNECTION `us.my-conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/vision/landmark/*']
);
EOF
bq query --use_legacy_sql=false < create_object_table.sql
Sử dụng Gemini trên Dữ liệu đối tượng
Giờ đây, bạn có thể chạy một truy vấn bằng Gemini để đánh giá hình ảnh mà không cần tải xuống!
Truy vấn hình ảnh bằng SQL chuẩn thông qua bq query:
cat <<EOF > query_images.sql
SELECT
uri,
image_analysis.description
FROM (
SELECT
uri,
AI.GENERATE(
(
'Identify what is happening in the image.',
ref
),
connection_id => 'us.my-conn',
endpoint => 'gemini-2.5-flash-lite',
output_schema => 'event STRING, severity STRING, description STRING'
) AS image_analysis
FROM
iceberg_object_ai.sample_images
);
EOF
bq query --use_legacy_sql=false < query_images.sql
Kết quả mẫu:
+----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| uri | description |
+----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| gs://cloud-samples-data/vision/landmark/eiffel_tower.jpg | The Eiffel Tower stands tall against a cloudy sky, overlooking the Seine River in Paris. Boats are docked along the riverbank, and trees line the opposite shore, with bridges and buildings visible in the distance. |
| gs://cloud-samples-data/vision/landmark/pofa.jpg | A wide shot shows the Palace of Fine Arts, a monumental structure in San Francisco, California. The building features a large rotunda with a dome, surrounded by colonnades. In front of the rotunda is a lagoon. Several people are walking around the grounds. The sky is blue with a few scattered clouds. |
| gs://cloud-samples-data/vision/landmark/st_basils.jpeg | A monument stands in front of Saint Basil's Cathedral in Moscow under a bright blue sky with scattered white clouds. The cathedral features distinctive onion domes in various colors and patterns, including red, blue and white stripes, green and beige stripes, and red and blue diamonds. A large green tree partially obscures the left side of the cathedral. People are visible in the foreground near the base of the monument and the cathedral entrance. |
+----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Khám phá ObjectRef trực tiếp: Phân tích cảm xúc
Mặc dù Bảng đối tượng tự động quản lý các tệp tham chiếu, nhưng bạn có thể tương tác trực tiếp với các đối tượng này bằng cách sử dụng Tham chiếu đối tượng của BigQuery để chạy quy trình phân tích tức thì trên các tệp riêng lẻ.
Ví dụ: bạn có thể sử dụng một tệp văn bản nhỏ được lưu trữ trong vùng chứa GCS của riêng bạn (bằng cách sử dụng biến $DEPS_BUCKET đã tạo trước đó) và phân tích tệp đó bằng OBJ.MAKE_REF với bq query.
Trước tiên, hãy tạo một tệp văn bản nhỏ rồi tải tệp đó lên vùng lưu trữ của bạn:
cat <<'EOF' > review.txt
This product is fantastic! It exceeded my expectations. The quality is top-notch. I highly recommend it to everyone!
EOF
gcloud storage cp review.txt gs://${DEPS_BUCKET}/review.txt
Giờ đây, hãy truy vấn tệp bằng cách sử dụng OBJ.MAKE_REF trong SQL chuẩn:
cat <<EOF > sentiment_analysis.sql
SELECT
AI.GENERATE(
(
'Analyze the sentiment of this text file. Is it positive, negative, or neutral? Explain why.',
OBJ.MAKE_REF('gs://${DEPS_BUCKET}/review.txt', 'us.my-conn')
),
connection_id => 'us.my-conn',
endpoint => 'gemini-2.5-flash-lite'
).result AS ml_generate_text_result;
EOF
bq query --use_legacy_sql=false < sentiment_analysis.sql
Kết quả mẫu:
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ml_generate_text_result |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| This text file has a **strongly positive** sentiment. |
| |
| Here's why: |
| |
| * **Positive Keywords:** The text is filled with unequivocally positive words and phrases: |
| * "fantastic" |
| * "exceeded my expectations" |
| * "top-notch" |
| * "highly recommend" |
| |
| * **Enthusiastic Language:** The use of exclamation marks ("!") further amplifies the positive tone, indicating excitement and strong approval. |
| |
| * **Lack of Negative or Neutral Elements:** There are no words, phrases, or implications that suggest any dissatisfaction, criticism, or even indifference. |
| |
| In summary, the author's language is enthusiastic and uses multiple strong positive descriptors, leaving no room for doubt that their opinion of the product is overwhelmingly positive. |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
8. Dọn dẹp
Để tránh các khoản phí phát sinh cho tài khoản Google Cloud của bạn, hãy xoá các tài nguyên đã tạo trong lớp học lập trình này.
Xoá tập dữ liệu và mối kết nối
Chạy lệnh sau trong Cloud Shell để xoá các tập dữ liệu và mối kết nối:
bq rm -r -f --location=$REGION iceberg_ai
bq rm -r -f --location=US iceberg_object_ai
bq rm --connection $PROJECT_ID.US.my-conn
Xoá các vùng lưu trữ GCS và tệp cục bộ
Dọn dẹp các vùng chứa GCS và tệp trên máy:
# Delete GCS buckets
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud storage rm -r gs://dataproc-temp-${REGION}-${PROJECT_NUMBER}-*
gcloud storage rm -r gs://dataproc-staging-${REGION}-${PROJECT_NUMBER}-*
gcloud storage rm -r gs://${DEPS_BUCKET}
# Delete local files
rm -f train_model.sql predict_fare.sql create_object_table.sql query_images.sql sentiment_analysis.sql test.py query.py history.py timetravel.py review.txt
Bạn cũng có thể xoá toàn bộ dự án nếu chỉ tạo dự án này cho phòng thí nghiệm này.
9. Xin chúc mừng
Xin chúc mừng! Bạn đã xây dựng thành công một Lakehouse hợp nhất bằng Apache Iceberg, BigLake và AI của BigQuery!
Kiến thức bạn học được
- Cách kết nối và truy vấn Danh mục REST Public Apache Iceberg.
- Sử dụng tính năng Time Travel (Du hành thời gian) trong Iceberg để kiểm tra các phiên bản tập dữ liệu.
- Huấn luyện các mô hình học máy của BigQuery trên dữ liệu có cấu trúc.
- Kết nối dữ liệu không có cấu trúc (hình ảnh) bằng cách sử dụng Bảng đối tượng và ObjectRef.
- Sử dụng Gemini ngay trong BigQuery SQL để phân tích hình ảnh.