Ngân hàng đề — Google Cloud Associate Data Practitioner

Tìm thấy 333 câu.

Câu 111 Data Management

A team of business analysts has been tasked with creating their own simple ETL (Extract, Transform, Load) pipelines. The goal is to empower them to move and clean data without needing to rely on the central engineering team. The analysts have strong data skills but are not programmers. Which service best aligns with the goal of enabling rapid, visual, low-code pipeline development?

  1. A Dataflow
  2. B Dataproc
  3. C Cloud Composer
  4. D Cloud Data Fusion
Xem giải thích

Đáp án

D — Cloud Data Fusion.

Vì sao đúng

Đề nêu bốn điều: nhà phân tích nghiệp vụ tự dựng pipeline, không phụ thuộc đội kỹ thuật trung tâm, không phải lập trình viên, và cần phát triển nhanh, trực quan, ít mã. Cloud Data Fusion khớp cả bốn.

⚠ Điểm mấu chốt — trao quyền cho người không lập trình:

Mục tiêu: nhà phân tích TỰ LÀM
        ↓
    Rào cản lớn nhất là VIẾT MÃ
        ↓
    Cloud Data Fusion
      - giao diện kéo thả trong trình duyệt
      - hơn 150 plugin nguồn/đích/biến đổi
      - Wrangler làm sạch trực quan
      - xem trước dữ liệu ở từng bước
        ↓
    → nhà phân tích tự dựng và tự chạy
    → đội kỹ thuật không thành nút cổ chai

⚠ Vì sao ba phương án kia đều KHÔNG "trao quyền" được:

Dataflow   → viết Apache Beam (Java/Python)
Dataproc   → viết Spark
Composer   → viết DAG bằng Python
        ↓
    ⚠ Cả ba đều đòi LẬP TRÌNH
    → nhà phân tích vẫn phải nhờ
      đội kỹ thuật
    → không đạt mục tiêu của đề

⚠ Nhưng "trao quyền" cần đi kèm rào chắn:

Nhà phân tích tự dựng pipeline
        ↓
    ⚠ Cần đặt sẵn:
      - namespace riêng cho từng nhóm
      - service account có quyền HẸP
      - hạn mức tài nguyên
      - quy ước đặt tên và tài liệu
        ↓
    → tự do trong một khuôn khổ,
      không phải tự do tuyệt đối

Xem thêm câu #13012 (cùng lô), #12915 (lô 133), #12981 (lô 134): cả ba cũng khoá Cloud Data Fusion, cùng lý do "không lập trình". Bốn câu CÙNG KHOÁ — nhất quán. Còn #13030 (cùng lô) khoá Dataflow vì tiêu chí ở đó là hiệu năng, không phải kỹ năng đội.

Vì sao các phương án khác sai

  • A (Dataflow) — đây là phương án gần nhất về năng lực xử lý, nhưng đòi viết Apache Beam — đúng rào cản mà đề muốn gỡ bỏ.

  • B (Dataproc) — đòi viết Spark, còn khó hơn.

  • C (Cloud Composer) — là công cụ ĐIỀU PHỐI, không phải công cụ dựng phép biến đổi; và DAG cũng viết bằng Python.

Ghi nhớ

⚠ Công cụ theo kỹ năng của người dùng — bảng phải thuộc: | Người dùng | Công cụ | |---|---| | Nhà phân tích, không lập trình | Cloud Data Fusion | | Nhà phân tích, cần khám phá và làm sạch | Dataprep | | Đội giỏi SQL, cần Git và kiểm thử | Dataform | | Kỹ sư Python/Java | Dataflow | | Đội có Spark | Dataproc | | Điều phối nhiều dịch vụ | Cloud Composer |

Từ khoá nhận diện:

"trao quyền cho nhà phân tích, ít mã, trực quan" → Cloud Data Fusion "khám phá dữ liệu, tìm bất thường" → Dataprep "SQL-first, có kiểm thử" → Dataform "hiệu năng và tiết kiệm tài nguyên" → Dataflow "quản lý thứ tự các bước" → Cloud Composer

Data Fusion — điều cần nhớ Nội dung
Nền tảng CDAP mã nguồn mở
Wrangler làm sạch trực quan
Hơn 150 plugin nguồn, đích, biến đổi
Chạy trên Dataproc tạm thời
Namespace tách môi trường giữa các nhóm
⚠ Chi phí instance thường trực — đáng kể
Rào chắn nên dựng trước khi trao quyền Rào chắn
Namespace riêng cho từng nhóm cách ly pipeline
Service account quyền hẹp pipeline chỉ chạm dữ liệu được phép
Quy ước đặt tên tìm lại được về sau
Môi trường dev tách production không phá dữ liệu thật
Rà soát định kỳ dọn pipeline bỏ hoang
Đào tạo cơ bản về chi phí và tác động tới nguồn
Rủi ro của mô hình "tự phục vụ" Rủi ro
Pipeline trùng lặp ba người làm ba bản cho cùng một việc
Chất lượng không đồng đều thiếu kiểm thử
Chi phí khó kiểm soát ai cũng chạy được job lớn
Pipeline bỏ hoang người tạo đã rời đội
Đối sách danh mục pipeline dùng chung + rà soát định kỳ
Khi nào nên chuyển pipeline sang đội kỹ thuật Dấu hiệu
Pipeline trở thành quan trọng cho nghiệp vụ cần SLA
Logic phức tạp vượt khả năng kéo thả
Cần kiểm thử tự động và quản lý phiên bản → Dataform hoặc Dataflow
Chi phí tăng đáng kể cần tối ưu
Mô hình tốt nhà phân tích tạo mẫu, kỹ thuật đưa vào sản xuất

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Pipeline nào đang chạy | Data Fusion → Pipeline list theo namespace | | Chi phí bao nhiêu | billing export, SKU Data Fusion và Dataproc | | Có pipeline bỏ hoang không | rà soát lần chạy gần nhất |

Và một điều nên chuẩn bị cùng lúc với việc trao công cụ cho nhà phân tích: một danh mục các pipeline đã có. Mô hình tự phục vụ rất dễ dẫn tới ba phiên bản khác nhau của cùng một luồng làm sạch dữ liệu khách hàng — và ba con số hơi khác nhau trong ba báo cáo là cái giá đắt hơn nhiều so với thời gian chờ đội kỹ thuật.

Câu 112 Data Analysis and Presentation

A data analyst needs to generate summaries for a large table of customer feedback stored in BigQuery. They want to use the gemini-pro foundation model in Vertex AI directly from their SQL queries, without moving the data.

What is the correct BigQuery ML approach to accomplish this?

  1. A

    Create a native BQML model using CREATE MODEL, specify the model type as 'GEMINI', and use the ML.PREDICT function.

  2. B

    Use the bq command-line tool to pipe the table data directly to the Vertex AI API and then manually update the table.

  3. C

    Export the data to Cloud Storage, process it with a Vertex AI Notebook, and re-import the results into BigQuery.

  4. D

    Create a CONNECTION to Vertex AI, create a REMOTE MODEL pointing to 'gemini-pro', and then use the ML.GENERATE_TEXT function.

Xem giải thích

Đáp án

D — Tạo một CONNECTION tới Vertex AI, tạo REMOTE MODEL trỏ tới gemini-pro, rồi dùng hàm ML.GENERATE_TEXT.

Vì sao đúng

Mô hình nền tảng như Gemini không được huấn luyện trong BigQuery — nó chạy ở Vertex AI. BigQuery gọi tới nó qua remote model, và hàm dành cho việc sinh văn bản là ML.GENERATE_TEXT.

⚠ Điểm mấu chốt — ba bước:

1. TẠO CONNECTION tới Vertex AI
   bq mk --connection --location=asia-southeast1 \
     --connection_type=CLOUD_RESOURCE ket-noi-vertex
        ↓
   Cấp cho service account của connection:
     roles/aiplatform.user

2. TẠO REMOTE MODEL
   CREATE OR REPLACE MODEL `du_an.gemini`
   REMOTE WITH CONNECTION
     `du_an.asia-southeast1.ket-noi-vertex`
   OPTIONS (ENDPOINT = 'gemini-pro');

3. GỌI BẰNG SQL
   SELECT ml_generate_text_llm_result AS tom_tat
   FROM ML.GENERATE_TEXT(
     MODEL `du_an.gemini`,
     (SELECT CONCAT('Tóm tắt phản hồi sau: ',
                    noi_dung) AS prompt
      FROM `du_an.phan_hoi_khach_hang`),
     STRUCT(0.2 AS temperature,
            256 AS max_output_tokens,
            TRUE AS flatten_json_output));

⚠ Vì sao "dữ liệu không phải di chuyển" lại quan trọng:

Cách truyền thống
    → xuất dữ liệu ra khỏi BigQuery
    → xử lý ở nơi khác
    → nhập kết quả về
        ↓
    ⚠ thêm bản sao dữ liệu cần bảo vệ
    ⚠ thêm bước, thêm chỗ hỏng

Remote model
    → BigQuery gọi Vertex AI THAY BẠN
    → dữ liệu ở nguyên trong BigQuery
    → kết quả ghi thẳng vào bảng

⚠ Phân biệt hai loại mô hình trong BigQuery ML:

MÔ HÌNH NỘI SINH (native)
    → CREATE MODEL ... OPTIONS(model_type='...')
    → LOGISTIC_REG, KMEANS, ARIMA_PLUS...
    → BigQuery TỰ huấn luyện
    → dùng ML.PREDICT

REMOTE MODEL                       ← đề này
    → CREATE MODEL ... REMOTE WITH CONNECTION
    → trỏ tới mô hình ở VERTEX AI
    → dùng ML.GENERATE_TEXT,
      ML.GENERATE_EMBEDDING...

Xem thêm câu #12962 (lô 134): dùng ML.PREDICT trên mô hình BQML tự huấn luyện. Câu này gọi mô hình nền tảng của Vertex AI nên dùng hàm khác. Hai khoá khác nhau vì hai loại mô hình khác nhau — hoàn toàn nhất quán.

Vì sao các phương án khác sai

  • A (tạo mô hình BQML nội sinh với model_type='GEMINI' rồi dùng ML.PREDICT) — đây là phương án gần nhất và nghe rất hợp lý, nhưng không có model_type='GEMINI': mô hình nền tảng phải khai bằng REMOTE WITH CONNECTION, và hàm sinh văn bản là ML.GENERATE_TEXT.

  • C (xuất sang GCS, xử lý bằng notebook, nhập lại) — trái yêu cầu "không di chuyển dữ liệu", và nhiều bước hơn hẳn.

  • B (dùng bq đẩy dữ liệu sang Vertex AI rồi cập nhật tay) — thủ công, không mở rộng được, và cũng đưa dữ liệu ra ngoài.

Ghi nhớ

⚠ Hai loại mô hình của BigQuery ML — bảng phải thuộc: | Loại | Khai bằng | Hàm gọi | |---|---|---| | Nội sinh (native) | OPTIONS(model_type=...) | ML.PREDICT, ML.EVALUATE | | Remote (Vertex AI) | REMOTE WITH CONNECTION | ML.GENERATE_TEXT, ML.GENERATE_EMBEDDING | | Nhập từ ngoài | MODEL_TYPE='TENSORFLOW' + MODEL_PATH | ML.PREDICT | | Điều kiện remote | CONNECTION + roles/aiplatform.user |

Từ khoá nhận diện:

"dùng mô hình nền tảng từ SQL, không di chuyển dữ liệu" → remote model + ML.GENERATE_TEXT "tạo vector nhúng" → ML.GENERATE_EMBEDDING "dự đoán bằng mô hình tự huấn luyện" → ML.PREDICT "gọi Natural Language API từ SQL" → ML.UNDERSTAND_TEXT "model_type='GEMINI'" → KHÔNG TỒN TẠI

Các hàm AI trong BigQuery Hàm
ML.GENERATE_TEXT sinh văn bản, tóm tắt, phân loại, trích xuất
ML.GENERATE_EMBEDDING vector nhúng cho tìm kiếm ngữ nghĩa
ML.UNDERSTAND_TEXT gọi Natural Language API
ML.TRANSLATE dịch
ML.ANNOTATE_IMAGE phân tích ảnh (với object table)
VECTOR_SEARCH tìm kiếm theo vector
Tham số quan trọng của ML.GENERATE_TEXT Tham số
temperature thấp (0–0,2) cho tác vụ cần nhất quán như tóm tắt
max_output_tokens giới hạn độ dài
flatten_json_output = TRUE trả về cột phẳng, dễ dùng
top_k, top_p điều khiển đa dạng
Prompt dựng bằng CONCAT từ chính cột dữ liệu
Chi phí và giới hạn cần biết Nội dung
Tính theo số TOKEN gửi và nhận không phải theo byte quét
Hạn mức của Vertex AI job lớn có thể bị giới hạn tốc độ
Thử trên MẪU trước LIMIT 100 để ước lượng
Bảng rất lớn cân nhắc chạy theo lô, ghi kết quả vào bảng
Mẹo chỉ chạy cho bản ghi MỚI, không chạy lại toàn bảng
Thực hành tốt khi tóm tắt phản hồi khách hàng Việc
Quét PII trước phản hồi tự do hay chứa tên, số điện thoại
Prompt rõ ràng, có ví dụ kết quả ổn định hơn
temperature thấp tránh mỗi lần một kiểu
Lưu kết quả vào bảng không gọi lại mỗi lần xem báo cáo
Kiểm tra thủ công một mẫu mô hình có hiểu đúng tiếng Việt không

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Connection có quyền chưa | service account của connection cần roles/aiplatform.user | | Kết quả có hợp lý không | đọc tay 50 bản tóm tắt ngẫu nhiên | | Chi phí bao nhiêu | billing export, SKU Vertex AI |

Và một thói quen tiết kiệm rất nhiều tiền khi dùng mô hình nền tảng trên bảng lớn: chỉ sinh kết quả cho bản ghi MỚI và lưu lại. Gọi ML.GENERATE_TEXT trực tiếp trong một view báo cáo nghĩa là mỗi lần ai đó mở dashboard, toàn bộ bảng lại được gửi qua mô hình một lần nữa — và hoá đơn đó tăng theo số người xem chứ không theo lượng dữ liệu.

Câu 113 Data Pipeline Orchestration

A company needs to implement a simple, event-driven task: whenever a new image is uploaded to a Cloud Storage bucket, a small piece of metadata needs to be extracted and sent to a notification service.

Why is Cloud Run Functions a better architectural choice for this task than a full-scale ETL (Extract, Transform, Load) service like Dataflow?

  1. A Dataflow is significantly more expensive for any type of task.
  2. B Dataflow is not capable of extracting metadata from files.
  3. C The task is lightweight and short-running, which is the intended use case for serverless functions, not large-scale data processing engines.
  4. D Only Cloud Functions can be triggered by events from Cloud Storage.
Xem giải thích

Đáp án

C — Tác vụ này nhẹ và chạy ngắn, đúng mục đích của hàm không máy chủ, chứ không phải của một engine xử lý dữ liệu quy mô lớn.

Vì sao đúng

Nguyên tắc là chọn công cụ tương xứng với quy mô công việc. Trích một mẩu siêu dữ liệu từ một ảnh rồi gửi thông báo là tác vụ nhỏ, ngắn, theo sự kiện — đúng khuôn mẫu của hàm không máy chủ.

⚠ Điểm mấu chốt — so đặc điểm công việc với đặc điểm công cụ:

CÔNG VIỆC TRONG ĐỀ
    - một tệp mỗi lần
    - chạy vài trăm mili giây
    - theo sự kiện, rời rạc
        ↓
CLOUD RUN FUNCTION
    - khởi động nhanh
    - co về 0 khi rảnh
    - trả tiền theo lần gọi
    - trigger Cloud Storage có sẵn
        ↓
    → khớp hoàn toàn

DATAFLOW
    - dựng cho xử lý SONG SONG khối lượng lớn
    - có chi phí khởi tạo job đáng kể
    - mạnh ở cửa sổ, trạng thái, tổng hợp
        ↓
    → dùng cho việc này là như
      thuê xe tải để chở một phong bì

⚠ Vì sao ba phương án kia đều SAI VỀ SỰ THẬT:

"Dataflow đắt hơn cho MỌI loại tác vụ"
    → SAI: với khối lượng lớn,
      Dataflow rẻ hơn nhiều so với
      gọi hàm hàng triệu lần

"Dataflow không trích được siêu dữ liệu"
    → SAI: nó xử lý được

"CHỈ Cloud Functions mới nhận sự kiện
 từ Cloud Storage"
    → SAI: Eventarc đưa sự kiện GCS tới
      Cloud Run, Workflows, và nhiều đích khác

⚠ Ngưỡng chuyển từ hàm sang Dataflow:

Vẫn dùng HÀM khi:
    - mỗi sự kiện xử lý độc lập
    - thời gian ngắn
    - không cần tổng hợp giữa các bản ghi

Chuyển sang DATAFLOW khi:
    - cần TỔNG HỢP theo cửa sổ
    - cần JOIN nhiều nguồn
    - xử lý hàng triệu bản ghi mỗi giờ
    - cần bảo đảm exactly-once phức tạp

Xem thêm câu #12912 (lô 133): cùng tình huống "tệp lên bucket thì chạy đoạn mã nhỏ" → cũng khoá Cloud Run function. Hai câu nhất quán. Còn #12951, #13024 khoá Dataflow vì ở đó cần tổng hợp theo cửa sổ trên luồng lớn.

Vì sao các phương án khác sai

  • A (Dataflow đắt hơn cho mọi loại tác vụ) — đây là phương án gần nhất về kết luận nhưng sai về lý do: Dataflow rẻ hơn ở khối lượng lớn. Cái sai của nó ở đây là không tương xứng, không phải "luôn đắt".

  • D (chỉ Cloud Functions mới nhận được sự kiện Cloud Storage) — sai: Eventarc định tuyến sự kiện GCS tới nhiều đích.

  • B (Dataflow không trích được siêu dữ liệu) — sai; nó hoàn toàn làm được.

Ghi nhớ

⚠ Chọn công cụ theo quy mô tác vụ — bảng phải thuộc: | Đặc điểm công việc | Công cụ | |---|---| | Nhẹ, ngắn, theo sự kiện, độc lập | Cloud Run function | | Container, chạy lâu hơn, HTTP | Cloud Run | | Chạy tới khi xong, theo lô | Cloud Run job | | Khối lượng lớn, cửa sổ, tổng hợp | Dataflow | | Đã có Spark | Dataproc | | Nguyên tắc | công cụ tương xứng với quy mô |

Từ khoá nhận diện:

"một tệp, một hành động nhỏ" → Cloud Run function "tổng hợp theo cửa sổ, luồng lớn" → Dataflow "xử lý hàng loạt tệp mỗi đêm" → Dataflow batch hoặc Cloud Run job "sự kiện GCS tới nhiều loại đích" → Eventarc "Dataflow luôn đắt" → SAI

Cloud Run function — điều cần nhớ Nội dung
Thế hệ 2 chạy trên nền Cloud Run
Thời gian tối đa tới 60 phút
Bộ nhớ tới 32 GiB
Co về 0 không dùng thì không tính tiền
--min-instances giảm khởi động nguội
Trigger HTTP, Pub/Sub, Cloud Storage, Firestore, Eventarc
Ba cái bẫy của hàm theo sự kiện Bẫy
Sự kiện có thể tới NHIỀU LẦN xử lý phải bất biến
Ghi lại vào chính bucket đó VÒNG LẶP VÔ TẬN
Nhiều tệp cùng lúc hàng nghìn instance khởi động — kiểm soát bằng --max-instances
Tệp rất lớn cân nhắc Cloud Run hoặc Dataflow
Phòng ngừa lọc theo tiền tố và đuôi tệp ngay đầu hàm
Khi nào phải nâng cấp lên Dataflow Dấu hiệu
Cần tổng hợp giữa các bản ghi đếm, trung bình theo cửa sổ
Cần join với nguồn khác side input
Thông lượng rất cao, liên tục chi phí gọi hàm vượt chi phí worker
Cần xử lý dữ liệu tới muộn watermark, allowed lateness
Cần exactly-once phức tạp
So chi phí ở hai đầu quy mô Quy mô
Vài nghìn sự kiện/ngày hàm rẻ hơn nhiều — Dataflow có chi phí worker tối thiểu
Hàng triệu sự kiện/giờ liên tục Dataflow rẻ hơn — xử lý theo lô song song
Điểm hoà vốn phụ thuộc thời gian xử lý mỗi bản ghi
Cách quyết ước tính cả hai với số liệu thật

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Hàm chạy bao lâu mỗi lần | log của hàm, trường execution time | | Có bị gọi lặp không | đếm số lần gọi trên cùng một tệp | | Chi phí bao nhiêu | billing export, so với ước tính Dataflow |

Và một nguyên tắc kiến trúc đáng giữ ngoài phạm vi câu hỏi này: chọn công cụ nhỏ nhất còn đủ dùng. Một engine mạnh dùng cho việc nhỏ không chỉ tốn tiền, nó còn mang theo cả độ phức tạp vận hành — và mỗi thành phần thừa trong hệ thống là thêm một thứ có thể hỏng vào lúc bạn không mong đợi.

Câu 114 Data Pipeline Orchestration

An e-commerce company wants to build a serverless, real-time analytics platform to analyze customer clickstream data from their website. The goal is to ingest the data, perform real-time transformations to enrich it with user profile information, and then load it into a data warehouse for immediate SQL analysis.

Which combination of Google Cloud services represents the standard architectural pattern for this use case?

  1. A Cloud Composer, Cloud Data Fusion, and BigQuery
  2. B Cloud Storage, Dataproc, and Cloud SQL
  3. C Pub/Sub, Dataflow, and BigQuery
  4. D Cloud Functions, Cloud Run, and Cloud Spanner
Xem giải thích

Đáp án

C — Pub/Sub, Dataflow và BigQuery.

Vì sao đúng

Đề mô tả đúng bốn chặng của một nền tảng phân tích thời gian thực: thu nhận, biến đổi và làm giàu ngay khi dữ liệu chảy qua, nạp vào kho, và phân tích bằng SQL — tất cả không máy chủ.

⚠ Điểm mấu chốt — mỗi dịch vụ một chặng:

Website phát sự kiện clickstream
        ↓
    PUB/SUB
      → thu nhận, làm bộ đệm
      → chịu được đỉnh tải giờ cao điểm
        ↓
    DATAFLOW (streaming)
      → LÀM GIÀU: nối sự kiện với
        hồ sơ người dùng
      → làm sạch, chuẩn hoá
        ↓
    BIGQUERY
      → lưu và phân tích bằng SQL ngay
        ↓
    ⚠ Cả ba đều KHÔNG MÁY CHỦ

⚠ "Làm giàu bằng hồ sơ người dùng" — Dataflow làm thế nào:

SIDE INPUT
    → nạp bảng hồ sơ người dùng
      làm tập dữ liệu phụ
    → mỗi sự kiện tra cứu trong đó
        ↓
    Hợp khi bảng hồ sơ NHỎ và ít đổi

Hoặc TRA CỨU NGOÀI
    → gọi Bigtable / Memorystore
      cho mỗi sự kiện
        ↓
    Hợp khi hồ sơ LỚN hoặc đổi liên tục
        ↓
    ⚠ Nhớ dùng bộ nhớ đệm trong worker
      để không gọi lại cho mỗi bản ghi

⚠ Vì sao ba phương án kia không phải kiến trúc luồng:

Cloud Storage + Dataproc + Cloud SQL
    → mô hình THEO LÔ, không thời gian thực
    → Dataproc không phải serverless

Composer + Data Fusion + BigQuery
    → điều phối và ETL THEO LÔ
    → Data Fusion không dành cho luồng
      độ trễ thấp

Cloud Functions + Cloud Run + Spanner
    → không có bộ đệm thu nhận
    → Spanner là CSDL giao dịch,
      không phải kho phân tích

Xem thêm câu #12951 (lô 134): cùng kiến trúc, cùng khoá Pub/Sub + Dataflow, ở đó là dữ liệu IoT với tổng hợp theo cửa sổ. Hai câu hoàn toàn nhất quán. Và #12994, #12999 (cùng lô) là hai biến thể: không biến đổi thì dùng subscription ghi thẳng, có che PII thì cần Dataflow.

Vì sao các phương án khác sai

  • A (Cloud Composer, Cloud Data Fusion, BigQuery) — đây là phương án gần nhất vì kết thúc ở BigQuery, nhưng Composer và Data Fusion đều thiên về xử lý THEO LÔ và có chi phí nền thường trực — không phải kiến trúc luồng không máy chủ.

  • B (Cloud Storage, Dataproc, Cloud SQL) — theo lô, Dataproc không phải serverless, và Cloud SQL không phải kho phân tích.

  • D (Cloud Functions, Cloud Run, Cloud Spanner) — thiếu bộ đệm thu nhận, và Spanner là CSDL giao dịch.

Ghi nhớ

⚠ Kiến trúc luồng chuẩn — bảng phải thuộc: | Chặng | Dịch vụ | |---|---| | Thu nhận, bộ đệm | Pub/Sub | | Biến đổi luồng, làm giàu, cửa sổ | Dataflow | | Kho phân tích | BigQuery | | Lưu dữ liệu thô | Cloud Storage | | Trực quan hoá | Looker Studio | | Tra cứu độ trễ cực thấp | Bigtable, Memorystore |

Từ khoá nhận diện:

"clickstream, thời gian thực, serverless, SQL ngay" → Pub/Sub + Dataflow + BigQuery "không cần biến đổi" → Pub/Sub BigQuery subscription "xử lý theo lô mỗi đêm" → Cloud Storage + Dataflow/Dataproc "điều phối nhiều bước" → Cloud Composer — vai trò khác "CSDL giao dịch toàn cầu" → Spanner — không phải kho phân tích

Ba cách làm giàu dữ liệu trong Dataflow Cách
Side input bảng nhỏ, ít thay đổi — nạp vào bộ nhớ worker
Tra cứu ngoài Bigtable / Memorystore cho bảng lớn
Stateful processing giữ trạng thái theo khoá trong pipeline
Lưu ý luôn có bộ nhớ đệm để giảm số lời gọi
Bẫy gọi API ngoài cho từng bản ghi → nghẽn
Cấu hình pipeline luồng cho sản xuất Cấu hình
Storage Write API ghi vào BigQuery hiệu quả
Streaming Engine tách trạng thái khỏi worker
Dead-letter bản ghi hỏng không làm chết job
Autoscaling --maxNumWorkers hợp lý
Cảnh báo data freshness biết khi không theo kịp
Service account riêng quyền tối thiểu
Với clickstream — vài đặc thù Đặc thù
Khối lượng rất lớn, đỉnh tải rõ rệt Pub/Sub làm bộ đệm
Sự kiện tới muộn người dùng mất mạng rồi gửi lại
Trùng lặp at-least-once → xử lý bất biến
PII trong URL và tham số cân nhắc che ngay trong pipeline
Bảng phân vùng theo ngày bắt buộc với khối lượng này
Nếu không cần làm giàu thì sao Nội dung
Pub/Sub BigQuery subscription ghi thẳng, không cần Dataflow
Rẻ hơn và đơn giản hơn nhiều
Nhưng đề này CẦN làm giàu bằng hồ sơ người dùng
→ phải có bước tính toán
Cách khác nạp thô rồi JOIN trong BigQuery (ELT) — độ trễ cao hơn

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Pipeline có theo kịp không | Data freshness trong Job metrics | | Pub/Sub có tồn đọng không | num_undelivered_messages | | Dữ liệu có tới BigQuery không | SELECT MAX(<thời điểm>) trên bảng đích |

Và một lựa chọn đáng cân nhắc nếu bảng hồ sơ người dùng không quá lớn: làm giàu bằng phép JOIN trong BigQuery thay vì trong Dataflow. Nạp sự kiện thô vào kho rồi nối với bảng hồ sơ bằng SQL đơn giản hơn nhiều về vận hành — cái giá là độ trễ tính bằng phút thay vì giây, và với phần lớn báo cáo phân tích thì đó là cái giá rất dễ chấp nhận.

Câu 115 Data Pipeline Orchestration
What is the primary function of an orchestration tool in a data pipeline?
  1. A To provide a serverless environment for running individual processing jobs.
  2. B To automate a multi-step workflow by managing the order and dependencies of tasks.
  3. C To store the final, processed data for analysis.
  4. D To visualize the results of a data pipeline in a business intelligence dashboard.
Xem giải thích

Đáp án

B — Tự động hoá một luồng công việc nhiều bước bằng cách quản lý THỨ TỰ và PHỤ THUỘC giữa các tác vụ.

Vì sao đúng

Đây chính là định nghĩa của điều phối (orchestration): nó không tự xử lý dữ liệu, mà quyết định việc nào chạy, khi nào, theo thứ tự nào, và làm gì khi hỏng.

⚠ Điểm mấu chốt — điều phối là "nhạc trưởng", không phải "nhạc công":

CÔNG CỤ XỬ LÝ (nhạc công)
    → Dataflow, Dataproc, BigQuery
    → LÀM việc: biến đổi dữ liệu

CÔNG CỤ ĐIỀU PHỐI (nhạc trưởng)
    → Cloud Composer, Workflows
    → CHỈ HUY: ai chạy trước, ai chạy sau,
      hỏng thì thử lại hay dừng
        ↓
    ⚠ Nhạc trưởng KHÔNG chơi nhạc cụ nào

⚠ Bốn việc cụ thể của một bộ điều phối:

1. THỨ TỰ và PHỤ THUỘC
    → B chỉ chạy khi A THÀNH CÔNG

2. THỬ LẠI và xử lý lỗi
    → theo từng tác vụ, có backoff

3. LỊCH và KÍCH HOẠT
    → theo giờ, hoặc theo sự kiện

4. THEO DÕI và CẢNH BÁO
    → một chỗ xem trạng thái cả luồng

⚠ Vì sao ba phương án kia mô tả các phạm trù KHÁC:

"môi trường không máy chủ để chạy job"
    → mô tả Cloud Run, Dataflow
    → đó là XỬ LÝ

"lưu dữ liệu đã xử lý để phân tích"
    → mô tả BigQuery, Cloud Storage
    → đó là LƯU TRỮ

"trực quan hoá kết quả trên dashboard"
    → mô tả Looker, Looker Studio
    → đó là BI

Xem thêm câu #12970 (lô 134): cùng câu hỏi về phạm trù công cụ, cùng khoá orchestration. Hai câu hoàn toàn nhất quán. Và #12948, #12996, #13003, #13015 là các câu hỏi cụ thể về chọn bộ điều phối nào.

Vì sao các phương án khác sai

  • A (cung cấp môi trường không máy chủ để chạy các job xử lý riêng lẻ) — đây là phương án gần nhất vì bộ điều phối cũng "chạy job", nhưng nó không cung cấp môi trường tính toán: nó ra lệnh cho các dịch vụ khác chạy.

  • C (lưu dữ liệu đã xử lý) — đó là vai trò của kho dữ liệu.

  • D (trực quan hoá kết quả) — đó là vai trò của công cụ BI.

Ghi nhớ

⚠ Bốn phạm trù trong một pipeline dữ liệu — bảng phải thuộc: | Phạm trù | Việc | Ví dụ | |---|---|---| | Lưu trữ | chứa dữ liệu | Cloud Storage, BigQuery | | Xử lý | biến đổi dữ liệu | Dataflow, Dataproc, Data Fusion | | Điều phối | quản lý THỨ TỰ và PHỤ THUỘC | Cloud Composer, Workflows | | BI | hiển thị cho người dùng | Looker, Looker Studio | | Một pipeline hoàn chỉnh | thường có cả bốn |

Từ khoá nhận diện:

"quản lý thứ tự và phụ thuộc" → điều phối "biến đổi, tính toán" → xử lý "nơi chứa" → lưu trữ "biểu đồ, báo cáo" → BI "chạy đúng giờ, một việc" → lập lịch — nhẹ hơn điều phối

Điều phối ↔ lập lịch — phân biệt Nội dung
Lập lịch kích hoạt MỘT việc theo thời gian
Điều phối quản lý NHIỀU việc và quan hệ giữa chúng
Cloud Scheduler lập lịch
Cloud Composer, Workflows điều phối
Thường kết hợp Scheduler kích hoạt một luồng
Tính năng của một bộ điều phối tốt Tính năng
DAG phụ thuộc, rẽ nhánh, chạy song song
Thử lại có backoff theo từng tác vụ
Sensor chờ điều kiện dữ liệu
Backfill chạy lại cho quá khứ
XCom / truyền dữ liệu giữa các bước
Cảnh báo và SLA biết khi chậm, không chỉ khi hỏng
Operator dựng sẵn không phải viết mã gọi API
Chọn bộ điều phối trên GCP Chọn
DAG phức tạp, nhiều đội Cloud Composer
Luồng nhẹ, ít bước Cloud Workflows
Chỉ SQL trong BigQuery Dataform
Chỉ trong Dataproc Dataproc Workflow Template
Một việc theo giờ Cloud Scheduler
Nguyên tắc chọn mức NHẸ NHẤT còn đủ dùng
Nguyên tắc thiết kế luồng điều phối Nguyên tắc
Mỗi tác vụ làm MỘT việc dễ chạy lại đúng chỗ hỏng
Tác vụ BẤT BIẾN chạy lại an toàn
KHÔNG xử lý dữ liệu trong bộ điều phối giao cho engine
Tham số hoá theo ngày chạy backfill được
Đừng dùng thời gian chờ thay cho phụ thuộc

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Bước nào hỏng | giao diện của bộ điều phối | | Luồng có chậm dần không | so thời lượng theo ngày | | Có bước nào chạy chồng không | kiểm tra khoá chống chạy song song |

Và một ranh giới đáng giữ nghiêm trong mọi kiến trúc dữ liệu: bộ điều phối ra lệnh, engine làm việc. Khi một tác vụ Airflow bắt đầu tự đọc và biến đổi hàng triệu dòng, ranh giới ấy đã bị vượt — và hệ quả thường thấy là môi trường điều phối trở thành nút thắt cho mọi pipeline khác trong tổ chức.

Câu 116 Data Analysis and Presentation

A new developer is building their first data model using LookML. They are working with an e-commerce database that has tables for users, orders, and products. To create a useful reporting interface for business users, they need to correctly structure their LookML project.

Which option correctly describes the primary functions of the core LookML components: model, view, and explore?

  1. A

    D)

    - Model: Defines the join relationships between different views.

    - View: Represents a database table and is where dimensions and measures are defined.

    - Explore: Specifies the database connection and the set of available Views.

  2. B

    C)

    - Model: A user-facing dashboard where visualizations are placed.

    - View: A single visualization tile on a dashboard.

    - Explore: The underlying SQL query that powers a dashboard.

  3. C

    B)

    - Model: Specifies the database connection and defines the set of available Explores.

    - View: Defines the join relationships between different database tables.

    - Explore: Represents a single database table and is where dimensions and measures are defined.

  4. D

    A)

    - Model: Specifies the database connection and defines the set of available Explores.

    - View: Represents a database table and is where dimensions and measures are defined.

    - Explore: Defines the join relationships between views, creating a queryable entity for users.

Xem giải thích

Đáp án

D — Model: khai KẾT NỐI CSDL và tập các Explore; View: đại diện MỘT BẢNG, nơi định nghĩa dimension và measure; Explore: khai QUAN HỆ JOIN giữa các view, tạo ra thực thể mà người dùng truy vấn.

Vì sao đúng

Ba thành phần cốt lõi của LookML có vai trò rất rõ ràng, và chỉ phương án này mô tả đúng cả ba.

⚠ Điểm mấu chốt — ba tầng, từ dưới lên:

VIEW  (tầng dưới cùng)
    → ánh xạ tới MỘT BẢNG trong CSDL
    → nơi khai DIMENSION và MEASURE
      dimension: thuộc tính để cắt lớp
      measure:   chỉ số tổng hợp
        ↓
EXPLORE  (tầng giữa)
    → chọn một view làm gốc
    → khai JOIN sang các view khác
    → là ĐIỂM VÀO cho người dùng
      trong giao diện Looker
        ↓
MODEL  (tầng trên cùng)
    → khai KẾT NỐI tới CSDL
    → gom các Explore nào được dùng

⚠ Ví dụ với users, orders, products trong đề:

# view: orders.view.lkml
view: orders {
  sql_table_name: cua_hang.orders ;;
  dimension: id { primary_key: yes }
  dimension_group: created { type: time }
  measure: tong_doanh_thu {
    type: sum
    sql: ${TABLE}.amount ;;
  }
}

# model: cua_hang.model.lkml
connection: "bigquery_cua_hang"
include: "/views/*.view.lkml"

explore: orders {
  join: users {
    sql_on: ${orders.user_id} = ${users.id} ;;
    relationship: many_to_one
  }
  join: products {
    sql_on: ${orders.product_id} = ${products.id} ;;
    relationship: many_to_one
  }
}

⚠ Vì sao các phương án khác lẫn lộn vai trò:

Nhầm phổ biến 1
    "Model khai JOIN"
        ↓
    ⚠ SAI — JOIN khai trong EXPLORE
      (explore thì viết BÊN TRONG tệp model,
       nên rất dễ nhầm)

Nhầm phổ biến 2
    "View khai JOIN, Explore là bảng"
        ↓
    ⚠ ĐẢO NGƯỢC hoàn toàn

Nhầm phổ biến 3
    "Model là dashboard, View là ô biểu đồ"
        ↓
    ⚠ Nhầm sang khái niệm giao diện,
      không phải LookML

Ghi nhớ về chất lượng câu hỏi

Nội dung các phương án còn giữ nguyên chữ cái của bản gốc (D), C), B), A)), không khớp với nhãn A/B/C/D hiện tại — bộ đề đã xáo thứ tự nhưng không xoá chữ cái cũ trong nội dung.

Điều này KHÔNG làm thay đổi khoá đáp án: phương án được chọn là nhãn D, và nội dung của nó (mang chữ cái gốc "A)") hoàn toàn chính xác. Khi làm bài, hãy đọc nội dung và bỏ qua chữ cái nằm bên trong nội dung.

Vì sao các phương án khác sai

  • A (Model khai join; Explore khai kết nối) — đây là phương án gần nhất vì mô tả View hoàn toàn đúng, nhưng nó đảo vai trò của Model và Explore: join khai trong Explore, còn kết nối khai trong Model.

  • C (View khai join, Explore là bảng) — đảo ngược View và Explore.

  • B (Model là dashboard, View là ô biểu đồ) — nhầm sang khái niệm giao diện; LookML là lớp mô hình, không phải lớp hiển thị.

Ghi nhớ

⚠ Ba thành phần LookML — bảng phải thuộc: | Thành phần | Vai trò | |---|---| | view | ánh xạ MỘT BẢNG; khai dimension và measure | | explore | khai JOIN giữa các view; ĐIỂM VÀO cho người dùng | | model | khai CONNECTION và tập các explore | | Bẫy | explore viết BÊN TRONG tệp model → dễ nhầm là model khai join |

Từ khoá nhận diện:

"kết nối CSDL" → model "bảng, dimension, measure" → view "join, điểm vào truy vấn" → explore "dashboard, biểu đồ" → giao diện Looker, không phải LookML "lọc dòng theo người dùng" → access_filter trong explore

Các thành phần LookML khác Thành phần
dimension thuộc tính để cắt lớp
measure chỉ số tổng hợp — nơi định nghĩa ARR, doanh thu
dimension_group nhóm chiều thời gian — sinh ra ngày, tuần, tháng, năm
derived_table bảng dẫn xuất từ SQL hoặc từ explore
access_filter lọc dòng theo user attribute
access_grant ẩn/hiện trường theo quyền
sql_table_name bảng thật trong CSDL
Quan hệ join trong explore Thuộc tính
sql_on điều kiện nối
relationship many_to_one, one_to_many, one_to_one, many_to_many
⚠ Khai sai relationship measure bị NHÂN BẢN → số liệu SAI
type left_outer (mặc định), inner, full_outer
fields giới hạn trường nào được đưa vào explore
Vì sao khai đúng relationship lại quan trọng Nội dung
many_to_one mỗi đơn hàng thuộc một khách → an toàn
one_to_many một khách nhiều đơn → fan-out
Fan-out measure ở phía "one" bị CỘNG NHIỀU LẦN
Triệu chứng doanh thu thổi phồng mà truy vấn nhìn vẫn đúng
Phòng ngừa khai đúng relationship, và dùng symmetric aggregates của Looker
Vòng đời phát triển LookML Bước
1 Viết trong development mode
2 LookML Validator — kiểm cú pháp
3 Content Validator — kiểm nội dung bị hỏng
4 Pull request trên Git, đồng nghiệp review
5 Deploy to production
Lợi ích thay đổi định nghĩa chỉ số phải qua review

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Explore sinh SQL gì | tab SQL trong giao diện Explore | | Join có nhân bản dòng không | so số dòng với truy vấn trực tiếp | | Chỉ số định nghĩa ở đâu | tìm measure trong kho LookML |

Và một lỗi rất hay gặp với người mới viết LookML, đáng nhớ hơn cả việc phân biệt ba thành phần: khai sai relationship trong join. Truy vấn vẫn chạy, biểu đồ vẫn vẽ, chỉ có điều doanh thu bị cộng lặp theo số dòng bên kia — và đó là loại sai lệch chỉ lộ ra khi ai đó tình cờ đối chiếu với báo cáo của phòng kế toán.

Câu 117 Data Pipeline Orchestration
What is the most significant advantage of using the decoupled "Replicate-then-Ingest" (DMS + BQDTS) pattern over a direct ETL pipeline from an on-premises database?
  1. A It protects the on-premises production database from the performance impact of analytical queries.
  2. B It requires managing fewer Google Cloud services.
  3. C It provides better performance for complex, in-flight data transformations.
  4. D It is the only pattern that supports real-time, streaming data ingestion.
Xem giải thích

Đáp án

A — Bảo vệ CSDL sản xuất tại chỗ khỏi ảnh hưởng hiệu năng của các truy vấn phân tích.

Vì sao đúng

Mẫu "nhân bản rồi nạp" tách hẳn hệ thống vận hành khỏi hoạt động phân tích: mọi truy vấn nặng chạy trên bản sao trên đám mây, không chạm tới CSDL đang phục vụ khách hàng.

⚠ Điểm mấu chốt — so hai kiến trúc:

ETL TRỰC TIẾP từ CSDL tại chỗ
        ↓
    Pipeline ĐỌC THẲNG CSDL sản xuất
        ↓
    ⚠ Truy vấn quét bảng lớn
    ⚠ Tranh chấp khoá và tài nguyên
    ⚠ Ứng dụng khách hàng CHẬM ĐI
    ⚠ Đội DBA phản đối, và họ đúng

DMS + BQDTS (nhân bản rồi nạp)
        ↓
    DMS đọc NHẬT KÝ GIAO DỊCH
      → tải rất nhẹ lên nguồn
        ↓
    Cloud SQL — bản sao đầy đủ
        ↓
    Mọi thao tác phân tích chạy TỪ ĐÂY
        ↓
    → CSDL sản xuất KHÔNG bị ảnh hưởng

⚠ Vì sao đọc nhật ký lại nhẹ hơn hẳn truy vấn:

ETL truy vấn: SELECT * FROM don_hang
              WHERE ngay > ...
        ↓
    → quét bảng, dùng CPU và I/O của nguồn
    → có thể giữ khoá

CDC đọc binlog/WAL
        ↓
    → đọc TUẦN TỰ một tệp nhật ký
      mà CSDL vốn đã ghi ra
    → gần như không tạo tải truy vấn

⚠ Lợi ích kèm theo — không chỉ là hiệu năng:

- Bản sao trên đám mây dùng được cho
  môi trường thử nghiệm
- Là một bước trong kế hoạch di chuyển
  lên đám mây
- Tách bạch quyền: đội phân tích
  không cần quyền trên CSDL sản xuất
- Độ trễ thấp, gần thời gian thực

Xem thêm câu #13019 (cùng lô): hỏi vai trò của DMS trong chính mẫu này → tạo bản sao trong Cloud SQL. Câu này hỏi LỢI ÍCH LỚN NHẤT của mẫu. Hai câu bổ sung nhau — nhất quán.

Vì sao các phương án khác sai

  • C (hiệu năng tốt hơn cho biến đổi phức tạp trên đường truyền) — đây là phương án gần nhất về mặt "ưu điểm kỹ thuật", nhưng ngược lại: mẫu này KHÔNG biến đổi trên đường; nó nhân bản nguyên vẹn rồi biến đổi sau. ETL trực tiếp mới là nơi biến đổi trên đường.

  • B (quản lý ít dịch vụ hơn) — ngược: mẫu này dùng nhiều dịch vụ hơn (DMS + Cloud SQL + BQDTS/Datastream).

  • D (là mô hình duy nhất hỗ trợ nạp luồng thời gian thực) — sai: Dataflow và Datastream cũng làm được, và mẫu này không phải "duy nhất".

Ghi nhớ

⚠ Hai mẫu đưa dữ liệu vận hành vào kho — bảng phải thuộc: | | ETL trực tiếp | Nhân bản rồi nạp | |---|---|---| | Tải lên nguồn | CAO — truy vấn quét bảng | THẤP — đọc nhật ký | | Số dịch vụ | ít hơn | nhiều hơn | | Bản sao vận hành | không có | có, dùng được cho việc khác | | Biến đổi | trên đường truyền | sau khi vào kho | | Độ phức tạp | thấp hơn | cao hơn | | Dùng khi | nguồn nhỏ, tải nhẹ | nguồn là hệ thống sản xuất quan trọng |

Từ khoá nhận diện:

"bảo vệ CSDL sản xuất khỏi truy vấn phân tích" → nhân bản rồi nạp "đọc nhật ký giao dịch" → CDC — tải nhẹ "biến đổi trên đường" → ETL trực tiếp "đơn giản, ít dịch vụ" → ETL trực tiếp "cần cả bản sao vận hành" → nhân bản rồi nạp

Ba cách giảm ảnh hưởng lên CSDL sản xuất Cách
CDC đọc nhật ký nhẹ nhất
Đọc từ REPLICA của nguồn thay vì máy chính
Chạy ngoài giờ cao điểm cho ETL theo lô
Đọc gia tăng theo cột dấu thời gian, không quét cả bảng
Tệ nhất quét toàn bảng giữa giờ làm việc
Biến thể đơn giản hơn của mẫu này Nội dung
Datastream nối THẲNG từ on-prem vào BigQuery bỏ chặng Cloud SQL
Ưu điểm ít dịch vụ hơn, vẫn nhẹ với nguồn
Nhược không có bản sao vận hành trên đám mây
Chọn khi mục tiêu chỉ là phân tích
Chọn mẫu đầy đủ khi cũng cần bản sao vận hành, hoặc đang di chuyển dần lên đám mây
Cái giá của mẫu này Cái giá
Nhiều dịch vụ hơn để vận hành
Chi phí Cloud SQL một instance đầy đủ
Thêm một chặng có thể trễ phải theo dõi lag ở hai nơi
Dữ liệu ở hai chỗ thêm bề mặt cần bảo vệ
Đáng giá khi CSDL sản xuất là hệ thống quan trọng
Theo dõi mẫu này Chỉ số
Replication lag của DMS on-prem → Cloud SQL
Độ trễ của Datastream/BQDTS Cloud SQL → BigQuery
Tải trên CSDL nguồn xác nhận thật sự nhẹ
Số dòng ở ba nơi đối chiếu định kỳ
Cảnh báo đặt cho CẢ HAI chặng

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Nguồn có bị ảnh hưởng không | theo dõi CPU và I/O trên máy chủ nguồn trước và sau | | Bản sao có bám kịp không | replication lag trong DMS console | | Dữ liệu ở BigQuery có mới không | SELECT MAX(<cột thời gian>) |

Và một lợi ích thường quyết định lựa chọn này trong thực tế, ngoài lý do kỹ thuật: đội quản trị CSDL đồng ý. Một pipeline đọc thẳng vào hệ thống sản xuất luôn là chủ đề tranh cãi kéo dài, còn một cơ chế nhân bản qua nhật ký giao dịch là thứ họ đã quen và tin tưởng — và điều đó thường rút ngắn dự án hơn bất kỳ tối ưu kỹ thuật nào.

Câu 118 Data Management

A large enterprise has hundreds of datasets in BigQuery and thousands of files in Cloud Storage buckets. To improve data governance and productivity, they need a centralized, fully managed service that can automatically discover and catalog all these data assets. The service must allow data analysts to easily search for relevant data using business terms and view its technical metadata.

Which service is designed to be this unified data discovery and metadata management system?

  1. A Cloud Asset Inventory
  2. B BigQuery
  3. C

    Data Catalog (Dataplex Universal Catalog)

  4. D Cloud Storage
Xem giải thích

Đáp án

C — Data Catalog (nay là Dataplex Universal Catalog).

Vì sao đúng

Đề nêu bốn yêu cầu: tự động phát hiện và lập danh mục dữ liệu ở BigQuery lẫn Cloud Storage, được quản lý hoàn toàn, cho phép tìm kiếm bằng thuật ngữ nghiệp vụ, và xem siêu dữ liệu kỹ thuật. Đó là toàn bộ mô tả của một data catalog.

⚠ Điểm mấu chốt — tự động lập danh mục, không phải nhập tay:

Dataplex Universal Catalog
        ↓
    TỰ ĐỘNG quét và lập danh mục:
      - dataset, bảng, view của BigQuery
      - tệp trong Cloud Storage
      - Pub/Sub topic, Spanner, Bigtable...
        ↓
    Thu thập SIÊU DỮ LIỆU KỸ THUẬT:
      lược đồ, kiểu cột, kích thước,
      thời điểm cập nhật
        ↓
    Cho phép gắn thêm SIÊU DỮ LIỆU NGHIỆP VỤ:
      mô tả, chủ sở hữu, thuật ngữ, tag
        ↓
    → tìm kiếm bằng NGÔN NGỮ NGHIỆP VỤ

⚠ Vì sao "tìm bằng thuật ngữ nghiệp vụ" lại quan trọng:

Nhà phân tích cần "doanh thu thuần"
        ↓
    ⚠ Không biết bảng tên là gì
    ⚠ Không biết nằm ở project nào
        ↓
    Không có catalog
        ↓
    → đi hỏi từng người
    → hoặc tự dựng lại bảng đã có
        ↓
    Có catalog
        ↓
    → gõ "doanh thu thuần" vào ô tìm kiếm
    → thấy bảng, chủ sở hữu, mô tả, lược đồ

⚠ Catalog không chỉ để tìm — nó là nền của quản trị:

Dataplex Universal Catalog còn là nơi:
    - định nghĩa TAXONOMY và POLICY TAG
      → dùng cho column-level security
    - quản lý DATA POLICY
      → dùng cho dynamic data masking
    - khai quy tắc CHẤT LƯỢNG DỮ LIỆU
    - theo dõi DÒNG DÕI (lineage)
      → dữ liệu này đến từ đâu
        ↓
    ⚠ Đây chính là lý do nó gắn với
      các câu hỏi về policy tag

Xem thêm câu #12965 (lô 134): dùng policy tag để chặn cột lương — policy tag được định nghĩa trong chính Dataplex Catalog. Và #12980 (lô 134): BigLake + policy tag cho data lake. Ba câu nhất quán — catalog là nền tảng chung.

Vì sao các phương án khác sai

  • A (Cloud Asset Inventory) — đây là phương án gần nhất vì cũng "kiểm kê", nhưng nó lập danh mục TÀI NGUYÊN HẠ TẦNG (VM, bucket, quy tắc firewall, chính sách IAM) phục vụ quản trị và bảo mật; nó không lập danh mục NỘI DUNG DỮ LIỆU hay cho tìm kiếm bằng thuật ngữ nghiệp vụ.

  • B (BigQuery) — là kho dữ liệu; nó có INFORMATION_SCHEMA nhưng không bao quát Cloud Storage và không có tìm kiếm nghiệp vụ.

  • D (Cloud Storage) — chỉ là kho đối tượng.

Ghi nhớ

⚠ Ba công cụ "kiểm kê" hay bị nhầm — bảng phải thuộc: | Công cụ | Lập danh mục gì | |---|---| | Dataplex Universal Catalog | DỮ LIỆU: bảng, tệp, lược đồ, thuật ngữ nghiệp vụ | | Cloud Asset Inventory | TÀI NGUYÊN HẠ TẦNG: VM, bucket, IAM, firewall | | INFORMATION_SCHEMA | siêu dữ liệu của riêng BigQuery | | Security Command Center | rủi ro và lỗ hổng bảo mật | | Phân biệt | Catalog cho người dùng DỮ LIỆU; Asset Inventory cho người quản trị HẠ TẦNG |

Từ khoá nhận diện:

"tìm dữ liệu bằng thuật ngữ nghiệp vụ" → Dataplex Universal Catalog "kiểm kê VM, bucket, chính sách IAM" → Cloud Asset Inventory "lược đồ bảng BigQuery bằng SQL" → INFORMATION_SCHEMA "policy tag, phân loại nhạy cảm" → Dataplex Catalog "dữ liệu này đến từ đâu" → Data Lineage trong Dataplex

Dataplex Universal Catalog — các tính năng Tính năng
Tự động phát hiện quét BigQuery, GCS, và nhiều nguồn
Tìm kiếm theo tên, mô tả, tag, thuật ngữ
Business glossary từ điển thuật ngữ nghiệp vụ
Tag và tag template siêu dữ liệu tuỳ chỉnh
Taxonomy và policy tag nền của column-level security
Data lineage dòng dõi dữ liệu tự động
Data quality quy tắc chất lượng, chấm điểm
Data profiling thống kê phân phối cột
Siêu dữ liệu kỹ thuật ↔ nghiệp vụ Loại
Kỹ thuật lược đồ, kiểu, kích thước, thời điểm cập nhật — tự thu thập
Nghiệp vụ mô tả, chủ sở hữu, mức nhạy cảm, thuật ngữ — người nhập
Vận hành tần suất cập nhật, SLA
Giá trị thật của catalog nằm ở phần NGHIỆP VỤ
Vì vậy catalog không có mô tả gần như vô dụng
Data lineage — vì sao đáng quan tâm Lý do
Phân tích tác động đổi bảng này thì hỏng báo cáo nào
Truy vết lỗi số liệu con số sai đến từ đâu
Tuân thủ chứng minh nguồn gốc dữ liệu
Onboarding người mới hiểu hệ thống nhanh hơn
Tự động Dataplex thu thập lineage của BigQuery và Dataflow
Làm catalog thành công cần gì Yếu tố
Bắt buộc mô tả khi tạo bảng đưa vào quy trình
Chỉ định CHỦ SỞ HỮU cho từng dataset có người chịu trách nhiệm
Từ điển thuật ngữ thống nhất "doanh thu thuần" nghĩa là gì
Gắn policy tag ngay từ đầu không làm sau
Thất bại thường gặp bật catalog rồi không ai điền mô tả

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Catalog đã quét được gì | tìm kiếm thử trong Dataplex → Search | | Bảng nào chưa có mô tả | lọc theo tài sản thiếu siêu dữ liệu | | Cột nhạy cảm đã gắn tag chưa | xem taxonomy và policy tag |

Và một sự thật quyết định catalog có giá trị hay không: phần đắt nhất không phải công nghệ, mà là mô tả do con người viết. Dataplex tự quét được lược đồ trong vài phút, nhưng câu trả lời cho "bảng này dùng để làm gì và hỏi ai khi số liệu sai" thì phải có người điền — và một catalog đầy bảng không mô tả chỉ là một danh sách tên bảng dài hơn.

Câu 119 Data Management

A company wants to provide its data science team with a cloud-based, collaborative tool for data analysis. The key requirements are that the tool must be a managed service to reduce operational overhead, provide secure integration with their existing data in BigQuery, and be built on familiar Jupyter Notebook technology.

Which Google Cloud service should they choose?

  1. A Compute Engine with a self-installed Jupyter server
  2. B Dataproc
  3. C Colab Enterprise
  4. D Looker Studio
Xem giải thích

Đáp án

C — Colab Enterprise.

Vì sao đúng

Đề nêu ba yêu cầu: dịch vụ được quản lý để giảm công vận hành, tích hợp an toàn với dữ liệu BigQuery sẵn có, và dựa trên công nghệ Jupyter Notebook quen thuộc. Colab Enterprise khớp cả ba.

⚠ Điểm mấu chốt — Jupyter được quản lý, tích hợp sẵn với GCP:

Colab Enterprise (trong Vertex AI)
        ↓
    - Giao diện Colab quen thuộc
    - KHÔNG phải quản lý máy chủ
    - Chạy dưới SERVICE ACCOUNT
      → không cần khoá JSON
    - Kết nối BigQuery bằng một dòng
    - Cộng tác như Google Docs
    - Kiểm soát bằng IAM và VPC-SC

⚠ Đọc BigQuery trong notebook:

%%bigquery df
SELECT ngay, SUM(doanh_thu) AS tong
FROM `du_an.ban_hang`
WHERE ngay >= '2026-01-01'
GROUP BY ngay
        ↓
    Hoặc:
      from google.cloud import bigquery
      client = bigquery.Client()
      df = client.query(sql).to_dataframe()
        ↓
    ⚠ Xác thực TỰ ĐỘNG qua service account

⚠ Vì sao tự cài Jupyter trên Compute Engine lại kém:

VM tự cài Jupyter
        ↓
    ⚠ Bạn phải lo:
      - vá hệ điều hành và thư viện
      - cấu hình HTTPS và xác thực
      - sao lưu notebook
      - tắt máy khi không dùng
      - quản lý khoá truy cập BigQuery
        ↓
    → trái hẳn yêu cầu "giảm công vận hành"
    → và là một bề mặt tấn công tự tạo

Xem thêm câu #12922 (lô 134): cùng tình huống, cùng khoá Vertex AI Notebooks / Colab Enterprise. Hai câu hoàn toàn nhất quán. Và #13031 (cùng lô) nói về lợi ích chạy lại notebook cho báo cáo định kỳ.

Vì sao các phương án khác sai

  • A (Compute Engine tự cài Jupyter) — đây là phương án gần nhất về mặt "cũng có Jupyter", nhưng không phải dịch vụ được quản lý: mọi việc vá lỗi, bảo mật, sao lưu đều thuộc về bạn.

  • B (Dataproc) — có notebook qua Jupyter component, nhưng nó là nền tảng Spark/Hadoop, nặng hơn nhiều nhu cầu, và phải quản lý cụm.

  • D (Looker Studio) — công cụ trực quan hoá, không chạy được Python.

Ghi nhớ

⚠ Hai lựa chọn notebook của Vertex AI — bảng phải thuộc: | | Colab Enterprise | Vertex AI Workbench | |---|---|---| | Quản lý máy | KHÔNG cần | instance riêng, cấu hình sâu | | Khởi động | nhanh | chậm hơn | | Cộng tác | như Google Docs | theo instance | | Tuỳ chỉnh môi trường | hạn chế hơn | cài được thư viện hệ thống | | Chọn khi | khám phá, cộng tác, ít vận hành | môi trường ổn định lâu dài | | Điểm chung | service account, tích hợp BigQuery, IAM |

Từ khoá nhận diện:

"Jupyter được quản lý, tích hợp BigQuery" → Colab Enterprise "cần cài thư viện hệ thống, đĩa lớn" → Vertex AI Workbench "phân tích bằng SQL" → BigQuery UI "dashboard" → Looker Studio "tự cài Jupyter trên VM" → trái yêu cầu dịch vụ được quản lý

Bảo mật cho notebook Biện pháp
Service account riêng, quyền hẹp không dùng khoá JSON
Tắt IP công khai truy cập qua IAP
VPC Service Controls chống dữ liệu ra ngoài
Tự động tắt khi rảnh tiết kiệm chi phí đáng kể
Không lưu bí mật trong ô lệnh dùng Secret Manager
Kiểm soát tải xuống với dữ liệu nhạy cảm
Đọc dữ liệu lớn vào notebook — cẩn thận Nội dung
to_dataframe() nạp vào RAM bảng lớn sẽ tràn bộ nhớ
Nên LIMIT, TABLESAMPLE, lọc theo phân vùng
BigQuery DataFrames (bigframes) xử lý ở phía BigQuery, cú pháp giống pandas
--dry_run biết trước sẽ quét bao nhiêu
Chi phí mỗi ô lệnh truy vấn là một truy vấn tính tiền
Từ notebook tới sản xuất Bước
1 Khám phá trong notebook
2 Tách mã thành module, viết kiểm thử
3 Vertex AI Pipelines để điều phối
4 Model Registry quản lý phiên bản
5 Triển khai endpoint hoặc batch prediction
Nhắc nhở notebook là nơi khám phá, không phải nơi chạy sản xuất
Chi phí notebook — điều hay bị bỏ quên Nội dung
Runtime tính tiền theo giờ chạy kể cả khi bạn không gõ gì
GPU rất đắt chỉ bật khi thật sự cần
Tự động tắt khi rảnh cấu hình quan trọng nhất
Đĩa vẫn tính tiền khi máy tắt dọn instance không dùng
Rà soát danh sách runtime đang chạy, hằng tuần

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Notebook chạy dưới danh nghĩa ai | !gcloud auth list trong một ô lệnh | | Truy vấn tốn bao nhiêu | BigQuery → Job history | | Runtime nào đang chạy | Vertex AI → Colab Enterprise → Runtimes |

Và một cài đặt nên bật ngay khi tạo runtime đầu tiên: tự động tắt khi không hoạt động. Một môi trường notebook có GPU để quên qua kỳ nghỉ tốn hơn cả chi phí lưu trữ của toàn bộ dữ liệu mà nó đang phân tích — và đây là khoản lãng phí phổ biến nhất khi một đội khoa học dữ liệu mới chuyển lên đám mây.

Câu 120 Data Pipeline Orchestration

A data engineering team is tasked with processing terabytes of log files from Cloud Storage daily. The transformation logic is straightforward, involving filtering out unneeded rows and converting data types before loading the results into BigQuery. The highest priority for this project is to minimize resource consumption and achieve the best possible processing performance.

Which service is the most efficient choice?

  1. A Dataflow, because it is a highly optimized engine with less overhead for pure data processing tasks.
  2. B Cloud Run, because it is the most lightweight serverless platform.
  3. C Dataproc, because it provides the most control over the underlying cluster.
  4. D Cloud Data Fusion, because its visual interface simplifies pipeline creation.
Xem giải thích

Đáp án

A — Dataflow, vì đây là engine được tối ưu cao với ít chi phí phụ trội cho tác vụ xử lý dữ liệu thuần tuý.

Vì sao đúng

Đề đặt ưu tiên CAO NHẤT là giảm tiêu thụ tài nguyên và đạt hiệu năng xử lý tốt nhất, với logic biến đổi đơn giản (lọc dòng và ép kiểu) trên hàng terabyte mỗi ngày.

⚠ Điểm mấu chốt — Dataflow là engine xử lý thuần, không có lớp phụ trội:

DATAFLOW
        ↓
    - Không máy chủ, tự co giãn
    - Trả tiền theo TÀI NGUYÊN JOB DÙNG THẬT
    - KHÔNG có chi phí nền thường trực
    - Tối ưu sâu cho lọc và ánh xạ
      (Beam tự gộp các bước — "fusion")
        ↓
    → với logic đơn giản trên khối lượng lớn,
      đây là phương án hiệu quả nhất

⚠ Vì sao Data Fusion kém hiệu quả hơn ở đây:

Cloud Data Fusion
        ↓
    Là LỚP GIAO DIỆN trên CDAP
        ↓
    Sinh ra pipeline chạy trên DATAPROC
        ↓
    ⚠ Có chi phí instance THƯỜNG TRỰC
    ⚠ Thêm một tầng trừu tượng nữa
        ↓
    → giá trị của nó là KHÔNG CẦN LẬP TRÌNH
    → nhưng đề này KHÔNG nêu ràng buộc đó,
      mà nêu ưu tiên HIỆU NĂNG

⚠ Vì sao Dataproc không phải lựa chọn hiệu quả nhất:

Dataproc
        ↓
    Cho KIỂM SOÁT cụm chi tiết nhất
        ↓
    ⚠ Nhưng phải quản lý cụm
    ⚠ Cụm nhàn rỗi vẫn tính tiền
        ↓
    → hợp khi ĐÃ CÓ job Spark
    → không hợp khi mục tiêu là
      "ít tài nguyên nhất"

⚠ Với logic đơn giản, tối ưu Dataflow rất đáng làm:

- Đọc trực tiếp Parquet/Avro thay vì CSV
- FlexRS cho job theo lô chịu được trễ
  → dùng Spot VM, rẻ hơn đáng kể
- Dataflow Prime → tự điều chỉnh tài nguyên
- Storage Write API → ghi BigQuery hiệu quả
- Đặt --maxNumWorkers hợp lý

Xem thêm câu #13020 (cùng lô): khoá "Data Fusion HOẶC Dataflow" vì đề ở đó chỉ nhấn ETL phức tạp, không nêu tiêu chí phân biệt. Và #13021 (cùng lô): khoá Data Fusion vì nhấn đội không lập trình. Ba câu, ba khoá, phân biệt bằng TIÊU CHÍ được nhấn mạnh — hoàn toàn nhất quán.

Vì sao các phương án khác sai

  • D (Cloud Data Fusion vì giao diện trực quan) — đây là phương án gần nhất và lý do nêu ra là đúng về Data Fusion, nhưng "giao diện đơn giản hoá việc dựng pipeline" không phải tiêu chí của đề; đề ưu tiên hiệu năng và tiết kiệm tài nguyên.

  • C (Dataproc vì kiểm soát cụm tốt nhất) — kiểm soát chi tiết không phải mục tiêu, và quản lý cụm làm tăng tiêu thụ tài nguyên.

  • B (Cloud Run vì nhẹ nhất) — Cloud Run không phải engine xử lý dữ liệu song song; xử lý terabyte mỗi ngày bằng nó là tự dựng lại Dataflow bằng tay.

Ghi nhớ

⚠ Chọn engine theo TIÊU CHÍ được nhấn mạnh — bảng phải thuộc: | Tiêu chí trong đề | Chọn | |---|---| | Hiệu năng, ít tài nguyên, khối lượng lớn | Dataflow | | Đội không lập trình, trực quan | Cloud Data Fusion | | Đã có job Spark/Hadoop | Dataproc | | Chỉ SQL, dữ liệu đã ở BigQuery | Dataform / BigQuery | | Tác vụ nhỏ theo sự kiện | Cloud Run function | | Nguyên tắc | đọc kỹ TIÊU CHÍ, không chỉ mô tả công việc |

Từ khoá nhận diện:

"hiệu năng tốt nhất, ít tài nguyên nhất" → Dataflow "không lập trình, kéo thả" → Cloud Data Fusion "kiểm soát cụm, đã có Spark" → Dataproc "một tệp, một hành động nhỏ" → Cloud Run function "chỉ lọc và ép kiểu" → cũng cân nhắc nạp thẳng + SQL

Tối ưu chi phí Dataflow theo lô Cách
FlexRS dùng Spot VM, rẻ hơn nhiều — chấp nhận job bắt đầu trễ
Dataflow Prime tự điều chỉnh tài nguyên theo bước
Đọc Parquet/Avro thay vì CSV — nhanh hơn hẳn
--maxNumWorkers tránh co giãn quá tay
Storage Write API ghi BigQuery hiệu quả
Lọc SỚM trong pipeline giảm dữ liệu ở các bước sau
Một lựa chọn còn nhẹ hơn nữa Nội dung
Logic chỉ là lọc dòng và ép kiểu
→ nạp THẲNG tệp vào BigQuery bq load hoặc LOAD DATA
→ lọc và ép kiểu bằng SQL trong BigQuery
Ưu điểm nạp theo lô MIỄN PHÍ, không có engine nào phải chạy
Nhược phải nạp cả dữ liệu sẽ bị lọc bỏ
Đáng cân nhắc khi tỉ lệ dòng bị loại không quá lớn
Beam fusion — vì sao Dataflow hiệu quả Nội dung
Beam TỰ GỘP các bước liên tiếp ParDo nối nhau chạy trong cùng một bước
→ không ghi trung gian ra đĩa
→ ít shuffle hơn
Đôi khi cần tách ra dùng Reshuffle để tăng song song
Xem chi tiết Execution details của job
Khi nào Dataflow KHÔNG phải lựa chọn tốt Trường hợp
Đội không viết được Beam → Data Fusion
Đã có sẵn hệ sinh thái Spark → Dataproc
Dữ liệu đã ở BigQuery → SQL rẻ hơn nhiều
Tác vụ nhỏ, rời rạc → Cloud Run function
Cần Hive, HBase, Presto → Dataproc

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Job tốn bao nhiêu tài nguyên | Job metrics → vCPU và bộ nhớ theo thời gian | | Bước nào là nút thắt | Job graph, xem throughput từng bước | | Chi phí thực tế | billing export, so với phương án khác |

Và một câu hỏi đáng đặt ra trước khi dựng bất kỳ pipeline nào cho logic đơn giản như "lọc dòng và ép kiểu": có cần một engine xử lý riêng không? Nạp thẳng tệp vào BigQuery là miễn phí, và một câu SQL làm được cả hai việc đó — nếu tỉ lệ dòng bị loại không quá lớn, cách ấy vừa nhanh hơn vừa không có hạ tầng nào phải vận hành.