Ngân hàng đề — Microsoft Azure Data Engineer

Tìm thấy 228 câu.

Câu 41
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are designing an Azure Stream Analytics solution that will analyze Twitter data.
You need to count the tweets in each 10-second window. The solution must ensure that each tweet is counted only once.
Solution: You use a hopping window that uses a hop size of 10 seconds and a window size of 10 seconds.
Does this meet the goal?
  1. A Yes
  2. B No
Xem giải thích

Phân tích câu hỏi trắc nghiệm về Azure Stream Analytics 🧩

📘 Giới thiệu ngắn gọn:
Là một Microsoft Azure Data Engineer với kinh nghiệm thiết kế giải pháp streaming data, tôi sẽ phân tích chi tiết câu hỏi này. Câu hỏi thuộc dạng "series of questions" trong kỳ thi chứng chỉ (như AZ-305 hoặc DP-203), yêu cầu đánh giá giải pháp có đạt mục tiêu không. Chủ đề tập trung vào Azure Stream Analytics để xử lý dữ liệu Twitter thời gian thực, sử dụng các loại window functions để đếm tweets chính xác.

🧩 Nội dung câu hỏi được giải thích chi tiết:

  • Bối cảnh: Bạn đang thiết kế giải pháp Azure Stream Analytics (ASA) để phân tích dữ liệu từ Twitter (dữ liệu streaming).
  • Mục tiêu cụ thể:
    • Đếm số lượng tweets trong mỗi cửa sổ 10 giây (10-second window).
    • Đảm bảo mỗi tweet chỉ được đếm đúng một lần (each tweet is counted only once) – tránh đếm trùng lặp do overlap giữa các cửa sổ.
  • Giải pháp đề xuất: Sử dụng hopping window với:
    • Hop size = 10 seconds (khoảng cách trượt giữa các cửa sổ).
    • Window size = 10 seconds (kích thước mỗi cửa sổ).
  • Câu hỏi chính: Giải pháp này có đạt mục tiêu không? (Does this meet the goal?)
  • Lưu ý quan trọng: Đây là câu hỏi kiểu Yes/No, và ASA sử dụng window functions để xử lý dữ liệu thời gian thực (real-time). Các window phải non-overlapping để tránh tweet bị đếm nhiều lần. Theo tài liệu Azure cập nhật mới nhất (2024-2026), hopping window với hop size = window size sẽ hoạt động như tumbling window (không overlap).
    📚 Tài liệu tham khảo:
  • Azure Stream Analytics Window Functions (Microsoft Docs, cập nhật 2024).
  • Tumbling vs Hopping Windows in ASA (xác nhận hành vi khi hop size = window size).

✅ Đáp án đúng: Yes
Lý do chọn đáp án này:
Giải pháp sử dụng hopping window với hop size = 10s và window size = 10s hoàn toàn đạt mục tiêu. Trong Azure Stream Analytics:

  • Hopping window thường có overlap nếu hop size < window size.
  • Nhưng khi hop size = window size (10s = 10s), các cửa sổ trở thành không chồng lấp (non-overlapping), giống hệt tumbling window: ví dụ, cửa sổ 1: 0-10s, cửa sổ 2: 10-20s, cửa sổ 3: 20-30s,...
  • Kết quả: Mỗi tweet chỉ thuộc đúng một cửa sổ, được đếm chỉ một lần, và đếm đúng trong mỗi 10s window.
  • 🛠️ Ví dụ query ASA: SELECT System.Timestamp() AS WindowEnd, COUNT(*) FROM TwitterStream TIMESTAMP BY TweetTime GROUP BY HoppingWindow(second, 10, 10) – Hoạt động hoàn hảo cho yêu cầu.

🔍 Giải thích tất cả các phương án (giữ nguyên văn bản gốc, phân tích bằng tiếng Việt):

  • Yes ✅ Đúng:
    Như đã giải thích, hopping window với hop size = window size tạo ra các cửa sổ liền kề không overlap, đảm bảo mỗi tweet chỉ đếm một lần trong đúng 10s window. Đây là hành vi chuẩn của ASA (xem docs Microsoft), phù hợp hoàn hảo với mục tiêu. Không có vấn đề về out-of-order events nếu cấu hình đúng (mặc định ASA xử lý grace periods).

  • No ❌ Sai:
    Phương án này sai vì nhầm lẫn về hopping window. Nếu chọn No, người trả lời có thể nghĩ hopping window luôn overlap (chỉ đúng khi hop size < window size). Thực tế, với hop size = window size, nó tương đương tumbling window – đạt yêu cầu 100%. Chọn No sẽ bỏ lỡ kiến thức cốt lõi về window functions trong ASA, dẫn đến thiết kế sai (ví dụ: dùng sliding window sẽ overlap và đếm trùng).

💡 Kết luận & Lời khuyên thiết kế:
✅ Giải pháp đạt mục tiêu! Để tối ưu, kết hợp với TumblingWindow trực tiếp nếu không cần overlap: TumblingWindow(second, 10). Nếu dữ liệu Twitter có độ trễ cao, thêm Late Input Handling trong ASA. Theo best practices 2026, sử dụng Event Hubs hoặc IoT Hub làm input cho Twitter stream. Nếu cần thực hành, test trên Azure Portal ASA Job! 🚀

Câu 42
You have a SQL pool in Azure Synapse that contains a table named dbo.Customers. The table contains a column name Email.
You need to prevent nonadministrative users from seeing the full email addresses in the Email column. The users must see values in a format of aXXX@XXXX.com instead.
What should you do?
  1. A From Microsoft SQL Server Management Studio, set an email mask on the Email column.
  2. B From the Azure portal, set a mask on the Email column.
  3. C From Microsoft SQL Server Management Studio, grant the SELECT permission to the users for all the columns in the dbo.Customers table except Email.
  4. D From the Azure portal, set a sensitivity classification of Confidential for the Email column.
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi tập trung vào Azure Synapse Analytics (cụ thể là SQL pool), một dịch vụ phân tích dữ liệu lớn của Microsoft Azure. Bạn có một bảng tên dbo.Customers chứa cột Email. Yêu cầu là ngăn chặn người dùng không phải admin (nonadministrative users) xem đầy đủ địa chỉ email, thay vào đó họ chỉ thấy giá trị được che giấu (masked) dưới dạng aXXX@XXXX.com (ví dụ: a***@****.com).

📌 Mục tiêu chính: Sử dụng tính năng Dynamic Data Masking (DDM) trong Azure Synapse SQL pool để tự động che dữ liệu nhạy cảm mà không thay đổi dữ liệu gốc. Tính năng này chỉ áp dụng cho người dùng có quyền SELECT nhưng không phải admin/owner, và admin vẫn thấy dữ liệu đầy đủ. Đây là cách bảo mật dữ liệu phổ biến, cập nhật đến năm 2026 vẫn là chuẩn (Azure Synapse hỗ trợ DDM từ phiên bản trước và không thay đổi cơ bản).

🛠️ Cách thực hiện: Sử dụng lệnh T-SQL như ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') hoặc giao diện đồ họa trong SSMS để thiết lập mask email – hàm email() sẽ tự động che phần tên miền và giữ lại chữ cái đầu.

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: From Microsoft SQL Server Management Studio, set an email mask on the Email column.

Lý do (🟢): Trong Azure Synapse SQL pool, Microsoft SQL Server Management Studio (SSMS) là công cụ chính thức hỗ trợ thiết lập Dynamic Data Masking qua giao diện người dùng (Column Properties > Dynamic Data Masking > chọn hàm 'email()'). Điều này sẽ che email thành dạng aXXX@XXXX.com cho non-admin users. Tính năng này được cập nhật ổn định đến 2026, không yêu cầu quyền admin cao cấp để xem masked data. Đây là phương pháp chuẩn xác nhất!

📋 Giải thích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn, với ✅ đúng hoặc ❌ sai, kèm lý do bằng tiếng Việt rõ ràng:

  • ✅ From Microsoft SQL Server Management Studio, set an email mask on the Email column.
    🟢 Đúng vì: SSMS cho phép thiết lập Dynamic Data Masking trực tiếp trên cột Email với hàm 'email()', tự động che dữ liệu cho non-admin mà admin vẫn thấy đầy đủ. Đây là cách thực hiện chuẩn theo docs Azure Synapse (hỗ trợ từ phiên bản 10.0+).

  • ❌ From the Azure portal, set a mask on the Email column.
    🔴 Sai vì: Azure Portal không hỗ trợ thiết lập Dynamic Data Masking trực tiếp trên cột trong Synapse SQL pool (chỉ xem báo cáo hoặc quản lý pool tổng quát). Phải dùng SSMS hoặc T-SQL. Tính năng này chưa cập nhật thêm trên Portal đến 2026.

  • ❌ From Microsoft SQL Server Management Studio, grant the SELECT permission to the users for all the columns in the dbo.Customers table except Email.
    🔴 Sai vì: Việc cấp quyền SELECT chỉ cho các cột trừ Email sẽ khiến người dùng không thấy gì ở cột Email (null hoặc lỗi), chứ không phải masked dạng aXXX@XXXX.com. Đây là Column-level security (CLS), không phải data masking.

  • ❌ From the Azure portal, set a sensitivity classification of Confidential for the Email column.
    🔴 Sai vì: Sensitivity classification (qua Azure Portal) chỉ dùng để phân loại dữ liệu nhạy cảm (nhãn Confidential cho discovery và compliance), không che giấu dữ liệu khi query. Người dùng vẫn thấy full email nếu có quyền SELECT.

📘 Tài liệu tham khảo

Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần demo code T-SQL, hãy hỏi thêm nhé!

Câu 43
You have an Azure Data Lake Storage Gen2 container that contains 100 TB of data.
You need to ensure that the data in the container is available for read workloads in a secondary region if an outage occurs in the primary region. The solution must minimize costs.
Which type of data redundancy should you use?
  1. A geo-redundant storage (GRS)
  2. B read-access geo-redundant storage (RA-GRS)
  3. C zone-redundant storage (ZRS)
  4. D locally-redundant storage (LRS)
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào Azure Data Lake Storage Gen2 (ADLS Gen2), một dịch vụ lưu trữ dữ liệu lớn phân cấp (hierarchical namespace) được xây dựng trên nền tảng Azure Blob Storage. Bạn có một container chứa 100 TB dữ liệu, và yêu cầu chính là:

  • Đảm bảo dữ liệu có thể đọc (read workloads) được từ vùng phụ (secondary region) nếu xảy ra sự cố gián đoạn (outage) ở vùng chính (primary region).
  • Giải pháp phải tối thiểu hóa chi phí (minimize costs).

🛠️ Các khái niệm cốt lõi:

  • ADLS Gen2 kế thừa các tùy chọn redundancy (dư thừa dữ liệu) từ Azure Storage Account (áp dụng cho Blob, File, v.v.), bao gồm sao chép dữ liệu đồng bộ/bất đồng bộ để chống mất mát.
  • Redundancy geo (liên vùng) sao chép dữ liệu đến vùng thứ cấp cách xa hàng trăm km (ví dụ: East US → West US).
  • Yêu cầu "read workloads in secondary region" ngụ ý cần truy cập đọc ngay lập tức từ vùng phụ mà không cần chờ failover thủ công, ngay cả khi vùng chính outage.
  • Tối thiểu chi phí: Ưu tiên tùy chọn có giá lưu trữ thấp nhất nhưng vẫn đáp ứng yêu cầu HA (high availability) liên vùng.

Dựa trên tài liệu Azure mới nhất (cập nhật đến 2026, bao gồm các tính năng GZRS/RA-GZRS nhưng câu hỏi chỉ liệt kê 4 option cơ bản), đây là bài toán chọn redundancy phù hợp cho read-only failover tự động.

✅ Đáp án đúng: read-access geo-redundant storage (RA-GRS)

Lý do lựa chọn:

  • RA-GRS sao chép dữ liệu bất đồng bộ (asynchronous) từ vùng chính sang vùng phụ (paired region), và cung cấp endpoint đọc riêng biệt (ví dụ: secondary.blob.core.windows.net) cho phép ứng dụng đọc dữ liệu ngay lập tức từ vùng phụ nếu vùng chính outage – không cần chờ failover.
  • Dữ liệu ở vùng phụ luôn read-only và cập nhật trong vòng 15 phút (RPO thấp).
  • Chi phí tối ưu: Giá lưu trữ giống hệt GRS (khoảng 2x LRS do sao chép đôi), không phí lưu trữ thêm cho vùng phụ. Chỉ tính phí egress khi đọc từ vùng phụ (thấp nếu chỉ dùng khi outage). Với 100 TB, đây là lựa chọn rẻ nhất đáp ứng yêu cầu read cross-region.
  • Phù hợp ADLS Gen2: Áp dụng trực tiếp cho storage account hierarchical namespace enabled.
  • So với các option khác, chỉ RA-GRS đảm bảo read availability tức thì ở secondary mà không hy sinh chi phí cơ bản.

📋 Phân tích tất cả các phương án (đúng/sai)

Dưới đây là giải thích chi tiết từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi option được đánh giá dựa trên khả năng đáp ứng yêu cầu (read ở secondary + min cost):

  • geo-redundant storage (GRS) ❌ SAI
    GRS sao chép bất đồng bộ sang vùng phụ, nhưng KHÔNG cho phép đọc từ vùng phụ (secondary chỉ dùng nội bộ cho failover). Nếu outage primary, dữ liệu KHÔNG available cho read workloads ngay – phải chờ customer-initiated failover (có thể mất giờ/ngày, thay đổi endpoint). Chi phí giống RA-GRS, nhưng không đáp ứng "read in secondary region". Không phù hợp.

  • read-access geo-redundant storage (RA-GRS) ✅ ĐÚNG
    Như đã giải thích ở trên: Cho phép read ngay từ secondary endpoint nếu primary outage, RPO ~15 phút, chi phí lưu trữ = GRS (tối ưu cho 100 TB). Đây là lựa chọn chuẩn Microsoft khuyến nghị cho read-heavy workloads cross-region. Hoàn hảo cho ADLS Gen2.

  • zone-redundant storage (ZRS) ❌ SAI
    ZRS sao chép đồng bộ qua 3 availability zones trong CÙNG MỘT region (không cross-region). Nếu outage toàn region primary, dữ liệu KHÔNG available ở secondary region. Chi phí cao hơn LRS ~15-20%, nhưng chỉ bảo vệ intra-region. Không đáp ứng yêu cầu geo-redundancy.

  • locally-redundant storage (LRS) ❌ SAI
    LRS chỉ sao chép 3 bản trong MỘT data center (không zone/region). Rẻ nhất (baseline cost), nhưng nếu outage region/datacenter, dữ liệu hoàn toàn unavailable. Không có secondary region access. Phù hợp min cost nhưng vi phạm yêu cầu read cross-region.

📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)

🛠️ Lời khuyên từ Azure Data Engineer: Để triển khai, tạo storage account với --sku Standard_GRS hoặc --sku Standard_RAGRS qua Azure CLI/Portal, enable hierarchical namespace cho ADLS Gen2. Test failover với Azure Storage Explorer sử dụng secondary endpoint! Nếu cần zone + geo (GZRS/RA-GZRS) cho durability cao hơn, xem xét upgrade (cập nhật 2023+).

Câu 44
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are designing an Azure Stream Analytics solution that will analyze Twitter data.
You need to count the tweets in each 10-second window. The solution must ensure that each tweet is counted only once.
Solution: You use a hopping window that uses a hop size of 5 seconds and a window size 10 seconds.
Does this meet the goal?
  1. A Yes
  2. B No
Xem giải thích

🧩 Phân tích chi tiết câu hỏi trắc nghiệm về Azure Stream Analytics

📘 Nội dung câu hỏi được giải thích rõ ràng:
Câu hỏi thuộc dạng "series of questions" trong kỳ thi chứng chỉ (như AZ-305 hoặc tương tự), nơi mỗi câu có ngữ cảnh chung nhưng giải pháp riêng biệt. Bạn đang thiết kế một giải pháp Azure Stream Analytics để phân tích dữ liệu từ Twitter (nay là X).
Yêu cầu cụ thể:

  • Đếm số lượng tweets trong mỗi cửa sổ thời gian 10 giây (10-second window).
  • Đảm bảo mỗi tweet chỉ được đếm đúng một lần (không trùng lặp).

Giải pháp đề xuất: Sử dụng hopping window với:

  • Hop size: 5 giây (khoảng cách di chuyển giữa các cửa sổ).
  • Window size: 10 giây (kích thước cửa sổ).

Câu hỏi: Giải pháp này có đạt được mục tiêu không? (Does this meet the goal?)
✅ Mục tiêu chính: Phân tích luồng dữ liệu thời gian thực (streaming data) từ Twitter, sử dụng cửa sổ thời gian cố định 10 giây, và tránh đếm trùng tweet (exactly-once semantics trong windowing).

✅ Đáp án đúng: No
Lý do chọn đáp án đúng (bằng kiến thức Azure Stream Analytics phiên bản mới nhất đến 2026):
Hopping window tạo ra các cửa sổ trùng lặp (overlapping) vì hop size (5 giây) nhỏ hơn window size (10 giây). Kết quả:

  • Mỗi tweet ở vị trí biên (gần ranh giới cửa sổ) sẽ được tính vào nhiều cửa sổ liền kề (cụ thể, một tweet có thể nằm trong 2 cửa sổ cùng lúc).
  • Điều này vi phạm yêu cầu "mỗi tweet chỉ đếm một lần".
  • Để đạt mục tiêu, cần dùng Tumbling Window với kích thước 10 giây (không overlap, mỗi sự kiện chỉ thuộc đúng một cửa sổ). Hoặc nếu cần overlap có kiểm soát, dùng Sliding Window nhưng vẫn phải cấu hình để tránh đếm trùng.
    🛠️ Ví dụ minh họa: Giả sử tweet đến lúc giây 7: Nó sẽ nằm trong cửa sổ [0-10s] và [5-15s], dẫn đến đếm 2 lần → ❌ Không đạt goal.

🔍 Giải thích tất cả các phương án (giữ nguyên văn bản gốc, phân tích bằng tiếng Việt):

  • Yes
    ❌ Sai vì: Phương án này cho rằng hopping window đáp ứng yêu cầu, nhưng thực tế hopping window gây overlap (hop 5s < size 10s), dẫn đến tweet bị đếm nhiều lần. Không đảm bảo "each tweet is counted only once". Trong Azure Stream Analytics (docs 2024-2026), hopping window dùng cho phân tích overlap, không phải exactly-once counting.

  • No
    ✅ Đúng vì: Giải pháp không đạt mục tiêu do overlap windows. Tài liệu chính thức xác nhận Tumbling Window mới phù hợp cho non-overlapping, exactly-once aggregation. Hopping chỉ dùng khi chấp nhận overlap để tăng độ mịn dữ liệu.

📚 Tài liệu tham khảo (cập nhật mới nhất AWS/Azure docs đến 2026):

🛠️ Khuyến nghị từ Azure Data Engineer: Nếu triển khai thực tế, dùng TumblingWindow(second, 10) trong query ASA để fix vấn đề!

Câu 45
You have an Azure Data Lake Storage Gen2 account named adls2 that is protected by a virtual network.
You are designing a SQL pool in Azure Synapse that will use adls2 as a source.
What should you use to authenticate to adls2?
  1. A an Azure Active Directory (Azure AD) user
  2. B a shared key
  3. C a shared access signature (SAS)
  4. D a managed identity
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào việc thiết kế một SQL pool (hay còn gọi là Dedicated SQL Pool) trong Azure Synapse Analytics, sử dụng Azure Data Lake Storage Gen2 (ADLS Gen2) có tên adls2 làm nguồn dữ liệu. Tài khoản ADLS Gen2 này được bảo vệ bởi Virtual Network (VNet), nghĩa là nó chỉ cho phép truy cập từ các tài nguyên trong VNet cụ thể (thường qua private endpoint, firewall rules hoặc VNet integration), không cho phép truy cập public từ internet.

📌 Bối cảnh chính:

  • Khi SQL pool trong Synapse cần đọc dữ liệu từ ADLS Gen2 qua PolyBase hoặc COPY command trong T-SQL.
  • Yêu cầu xác thực (authenticate) an toàn, tuân thủ nguyên tắc least privilege và zero-trust security.
  • Theo tài liệu Azure mới nhất (cập nhật đến 2024-2026), Synapse workspace hỗ trợ VNet integration và private endpoints cho ADLS, ưu tiên managed identity để tránh lộ key/token public.

Mục tiêu: Chọn phương pháp xác thực phù hợp nhất để SQL pool truy cập ADLS Gen2 mà không vi phạm bảo mật VNet.

✅ Đáp án đúng: a managed identity

Lý do lựa chọn 🛠️:

  • Managed identity (system-assigned hoặc user-assigned) là phương pháp chuẩn và bắt buộc cho Synapse SQL pool khi truy cập ADLS Gen2 được bảo vệ bởi VNet/private endpoint.
  • Synapse workspace tự động sử dụng managed identity để cấp quyền Storage Blob Data Contributor trên ADLS qua Azure RBAC.
  • Không cần lưu trữ secret/key, tự động rotate, và traffic giữ private trong VNet (không expose public endpoint).
  • Hỗ trợ hierarchical namespace của ADLS Gen2 và tích hợp liền mạch với Synapse Link hoặc PolyBase EXTERNAL TABLE.
  • Theo best practices Azure 2026: Managed identity giảm rủi ro credential leakage lên đến 99% so với key-based auth.

📘 Tài liệu tham khảo:

❌ Giải thích tất cả các phương án

Dưới đây là phân tích từng lựa chọn một cách chi tiết, dựa trên phiên bản Azure mới nhất (Synapse Analytics 2026 với VNet Data Exfiltration Protection):

  • [SAI] an Azure Active Directory (Azure AD) user
    ❌ Sai vì: Phương pháp này yêu cầu user tương tác trực tiếp (interactive auth) qua token AAD, không phù hợp cho service-to-service như SQL pool chạy tự động. Với VNet protection, token AAD không bypass được private endpoint mà không có managed identity. Ngoài ra, nó expose user credentials và không scale cho workload lớn.

  • [SAI] a shared key
    ❌ Sai vì: Shared key (account key) là auth public/non-secure, chỉ dùng cho public endpoint. ADLS Gen2 protected by VNet block hoàn toàn shared key vì traffic phải private. Sử dụng key vi phạm nguyên tắc secretless và dễ bị lộ (Azure khuyến cáo deprecated từ 2021).

  • [SAI] a shared access signature (SAS)
    ❌ Sai vì: SAS là token tạm thời cho public access, nhưng với VNet/private endpoint, SAS không hoạt động vì yêu cầu resolve DNS private và auth RBAC. SAS expire nhanh, không phù hợp production, và Azure Synapse không hỗ trợ SAS cho PolyBase trong môi trường secured VNet.

  • [ĐÚNG] a managed identity
    ✅ Đúng như đã giải thích ở trên: Phương pháp an toàn nhất, tích hợp native với VNet và Synapse. 🚀

Câu 46
You have an Azure Databricks resource.
You need to log actions that relate to changes in compute for the Databricks resource.
Which Databricks services should you log?
  1. A clusters
  2. B workspace
  3. C DBFS
  4. D SSH
  5. E jobs
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào Azure Databricks resource (một tài nguyên Databricks được triển khai trên nền tảng Azure). Yêu cầu cụ thể là ghi log (log) các hành động liên quan đến thay đổi compute (compute ở đây ám chỉ các tài nguyên tính toán như cluster, bao gồm việc tạo, khởi động, dừng, thay đổi quy mô cluster...).
📘 Mục tiêu chính: Xác định Databricks service nào cần được log để theo dõi các thay đổi này. Trong Databricks (phiên bản mới nhất đến 2026, hỗ trợ trên Azure), hệ thống audit logs cho phép bật log riêng biệt cho từng service để ghi lại các sự kiện hành chính và hoạt động. Thay đổi compute chủ yếu xảy ra ở cấp độ clusters, vì đây là nơi quản lý tài nguyên tính toán thực tế.

✅ Đáp án đúng: clusters

Lý do lựa chọn:
🛠️ Service clusters ghi log tất cả các hành động liên quan đến thay đổi compute, chẳng hạn như: tạo cluster mới (CREATE), khởi động (START), dừng (TERMINATE), thay đổi quy mô (EDIT_SCALE hoặc RESIZE), xóa cluster (DELETE), và các sự kiện liên quan đến instance pool hoặc compute policies. Đây chính là những thay đổi trực tiếp ảnh hưởng đến tài nguyên tính toán của Databricks resource trên Azure. Theo tài liệu chính thức Databricks (cập nhật 2026), audit logs cho clusters được khuyến nghị bật để theo dõi compute changes một cách chi tiết và tuân thủ (compliance).
📘 Nguồn tham khảo:

📋 Giải thích tất cả các phương án (đúng/sai)

Dưới đây là phân tích từng lựa chọn một cách chi tiết, dựa trên Databricks audit log categories mới nhất (2026). Mỗi service có phạm vi log riêng biệt, không overlap hoàn toàn với compute changes:

  • clusters ✅ Đúng: Như đã giải thích ở trên, đây là service duy nhất ghi log trực tiếp các thay đổi compute (create/start/stop/resize cluster). Bật log này đảm bảo theo dõi đầy đủ hành động trên tài nguyên tính toán.

  • workspace ❌ Sai: Service workspace chỉ log các hành động cấp workspace như tạo/sửa/xóa user, group, permissions, hoặc notebook operations (ví dụ: CREATE_NOTEBOOK, UPDATE_USER). Không liên quan đến thay đổi compute cụ thể như cluster lifecycle, nên không phù hợp.

  • DBFS ❌ Sai: Service DBFS (Databricks File System) log các hoạt động file system như upload/download file (PUT, LIST, DELETE_PATH). Đây là log về lưu trữ dữ liệu, không phải thay đổi compute (không ghi cluster start/stop).

  • SSH ❌ Sai: Service SSH chỉ log các sự kiện liên quan đến SSH public keys như thêm/xóa key cho cluster (ADD_SSH_PUBLIC_KEY, DELETE_SSH_PUBLIC_KEY). Đây là tính năng phụ trợ truy cập cluster, không phải thay đổi compute cốt lõi.

  • jobs ❌ Sai: Service jobs log các hành động liên quan đến job runs và schedules như tạo job (CREATE_JOB), chạy job (RUN_JOB), hoặc sửa task (EDIT_RUN). Mặc dù job có thể trigger cluster, nhưng log này tập trung vào workflow/job lifecycle chứ không phải thay đổi compute trực tiếp (cluster management nằm ở service clusters).

🧩 Lưu ý bổ sung: Trong Azure Databricks, bạn có thể bật audit logs qua Admin Console > Audit Logs và forward đến Azure Log Analytics. Để tối ưu, chỉ bật clusters cho compute changes nhằm tránh overhead log không cần thiết. Nếu cần log toàn diện, kết hợp với Azure Policy hoặc Sentinel cho monitoring!

Câu 47
You plan to implement an Azure Data Lake Gen 2 storage account.
You need to ensure that the data lake will remain available if a data center fails in the primary Azure region. The solution must minimize costs.
Which type of replication should you use for the storage account?
  1. A geo-redundant storage (GRS)
  2. B geo-zone-redundant storage (GZRS)
  3. C locally-redundant storage (LRS)
  4. D zone-redundant storage (ZRS)
Xem giải thích

🧩 Phân tích chi tiết câu hỏi trắc nghiệm

✅ Giải thích nội dung câu hỏi:
Câu hỏi tập trung vào việc triển khai một tài khoản lưu trữ Azure Data Lake Gen2 (dựa trên Azure Blob Storage). Yêu cầu chính là đảm bảo dữ liệu vẫn có sẵn (available) ngay cả khi một data center (trung tâm dữ liệu) trong vùng Azure chính (primary region) gặp sự cố thất bại. Đồng thời, giải pháp phải tối thiểu hóa chi phí (minimize costs).

  • Azure Data Lake Gen2 hỗ trợ các loại sao chép (replication) giống như Azure Storage Accounts thông thường, giúp bảo vệ dữ liệu chống mất mát.
  • Data center failure trong primary region: Trong Azure, "data center" thường ám chỉ một Availability Zone (AZ) – một trung tâm dữ liệu vật lý riêng biệt trong cùng một region. Sự cố này không phải là failure toàn bộ region, mà chỉ một AZ cụ thể.
  • Mục tiêu: Chọn loại replication bảo vệ intra-region (trong region) chống AZ failure, với chi phí thấp nhất.
    (Kiến thức cập nhật đến 2024-2026: Azure Storage replication không thay đổi lớn, vẫn ưu tiên ZRS cho AZ redundancy theo tài liệu chính thức Microsoft Learn).

✅ Đáp án đúng: zone-redundant storage (ZRS)

Lý do lựa chọn:
🛠️ ZRS sao chép dữ liệu 3 bản sao đồng bộ qua 3 Availability Zones (AZs) trong cùng một region chính, đảm bảo dữ liệu vẫn available nếu một data center (AZ) thất bại. Không replicate ra region khác nên chi phí thấp hơn so với các loại geo-redundant (chỉ tính phí intra-region). Phù hợp hoàn hảo với yêu cầu "data center fails in the primary region" (AZ failure) và "minimize costs".
📘 Nguồn tham khảo:

📋 Giải thích tất cả các phương án

Dưới đây là phân tích từng lựa chọn (giữ nguyên văn bản gốc bằng tiếng Anh), đánh dấu ✅ đúng hoặc ❌ sai, kèm lý do chi tiết bằng tiếng Việt:

  • ❌ geo-redundant storage (GRS):
    Loại này sao chép LRS ở primary region + LRS ở secondary region (xa hàng nghìn km). Bảo vệ chống toàn bộ region failure, nhưng chi phí cao hơn (gấp đôi ZRS do inter-region traffic). Không cần thiết vì câu hỏi chỉ yêu cầu chống data center (AZ) failure trong primary region, không phải toàn region.

  • ❌ geo-zone-redundant storage (GZRS):
    Sao chép ZRS ở primary region + LRS ở secondary region. Bảo vệ cao cấp chống AZ failure + toàn region failure, nhưng chi phí đắt nhất (kết hợp ZRS + geo). Vượt quá yêu cầu và không minimize costs.

  • ❌ locally-redundant storage (LRS):
    Chỉ sao chép 3 bản sao trong cùng một data center (AZ). Không bảo vệ nếu data center đó thất bại hoàn toàn. Rẻ nhất nhưng không đáp ứng yêu cầu availability khi data center failure.

  • ✅ zone-redundant storage (ZRS):
    Như đã giải thích ở đáp án đúng: Bảo vệ chống AZ (data center) failure trong primary region với 3 AZs đồng bộ, chi phí thấp, lý tưởng cho Data Lake Gen2.

🧩 Kết luận: ZRS là lựa chọn tối ưu, cân bằng giữa độ tin cậy và chi phí. Nếu cần bảo vệ toàn region, mới dùng GRS/GZRS – nhưng câu hỏi nhấn mạnh "primary region" và "data center".

Câu 48
You are designing a highly available Azure Data Lake Storage solution that will include geo-zone-redundant storage (GZRS).
You need to monitor for replication delays that can affect the recovery point objective (RPO).
What should you include in the monitoring solution?
  1. A 5xx: Server Error errors
  2. B Average Success E2E Latency
  3. C availability
  4. D Last Sync Time
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào việc thiết kế giải pháp lưu trữ Azure Data Lake Storage có tính sẵn sàng cao (highly available), sử dụng loại lưu trữ geo-zone-redundant storage (GZRS). GZRS đảm bảo dữ liệu được sao chép đồng bộ qua nhiều vùng (geo-redundant) và nhiều availability zone trong vùng đó, giúp phục hồi nhanh chóng trong trường hợp disaster recovery.

📌 Vấn đề cần giải quyết: Bạn cần giám sát (monitor) các độ trễ sao chép (replication delays) có thể ảnh hưởng đến recovery point objective (RPO) – chỉ số đo lường lượng dữ liệu tối đa có thể mất trong quá trình phục hồi (thường là thời gian giữa các lần sao chép). Độ trễ sao chép lớn sẽ làm tăng RPO, dẫn đến mất dữ liệu nhiều hơn.

🛠️ Mục tiêu: Xác định metric phù hợp trong giải pháp giám sát (monitoring solution) để phát hiện sớm các vấn đề này, dựa trên các metrics có sẵn trong Azure Monitor cho Azure Storage (bao gồm Data Lake Storage Gen2).

✅ Đáp án đúng: Last Sync Time

Lý do lựa chọn:

  • Last Sync Time là metric chính thức của Azure Storage để theo dõi thời gian sao chép cuối cùng (last synchronization time) giữa primary và secondary endpoints trong GZRS.
  • Nó giúp phát hiện trực tiếp replication delays bằng cách so sánh thời gian sync gần nhất với thời gian hiện tại. Nếu khoảng cách lớn hơn ngưỡng RPO mong muốn (ví dụ: >15 phút), bạn có thể kích hoạt cảnh báo.
  • Theo tài liệu Azure cập nhật đến 2026 (Azure Storage redundancy options), metric này được khuyến nghị đặc biệt cho GZRS/RA-GZRS để đảm bảo RPO thấp (thường <15 phút).
  • 📘 Nguồn tham khảo:

❌ Giải thích tất cả các phương án

  • 5xx: Server Error errors
    ❌ Sai: Metric này theo dõi các lỗi server (HTTP 5xx) từ phía Azure, thường liên quan đến vấn đề backend hoặc quá tải. Nó không đo lường độ trễ sao chép mà chỉ phản ánh lỗi dịch vụ tổng quát, không ảnh hưởng trực tiếp đến RPO của replication trong GZRS.

  • Average Success E2E Latency
    ❌ Sai: Đây là metric đo độ trễ end-to-end trung bình cho các yêu cầu thành công (từ client đến server và ngược lại). Nó hữu ích cho hiệu suất truy cập dữ liệu nhưng không liên quan đến thời gian sao chép giữa các vùng/zone, nên không giúp monitor replication delays ảnh hưởng RPO.

  • availability
    ❌ Sai: Metric này tính toán tỷ lệ sẵn sàng (availability percentage) của storage account dựa trên các yêu cầu thành công. Nó cho biết tổng thể dịch vụ có ổn định không, nhưng không cung cấp thông tin cụ thể về độ trễ sao chép, nên không phù hợp để bảo vệ RPO.

🧩 Tóm tắt: Chỉ Last Sync Time trực tiếp giải quyết vấn đề replication delays trong GZRS, giúp duy trì RPO thấp và high availability cho Azure Data Lake Storage! 🚀

Câu 49 Chọn nhiều đáp án
You are creating an Azure Data Factory data flow that will ingest data from a CSV file, cast columns to specified types of data, and insert the data into a table in an
Azure Synapse Analytic dedicated SQL pool. The CSV file contains three columns named username, comment, and date.
The data flow already contains the following:
✑ A source transformation.
✑ A Derived Column transformation to set the appropriate types of data.
✑ A sink transformation to land the data in the pool.
You need to ensure that the data flow meets the following requirements:
✑ All valid rows must be written to the destination table.
✑ Truncation errors in the comment column must be avoided proactively.
✑ Any rows containing comment values that will cause truncation errors upon insert must be written to a file in blob storage.
Which two actions should you perform? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
  1. A To the data flow, add a sink transformation to write the rows to a file in blob storage.
  2. B To the data flow, add a Conditional Split transformation to separate the rows that will cause truncation errors.
  3. C To the data flow, add a filter transformation to filter out rows that will cause truncation errors.
  4. D Add a select transformation to select only the rows that will cause truncation errors.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi này thuộc về Azure Data Factory (ADF), cụ thể là mapping data flow, nơi bạn đang xây dựng một data flow để xử lý dữ liệu từ file CSV (có 3 cột: username, comment, date). Data flow đã có:

  • Source transformation: Đọc dữ liệu từ CSV.
  • Derived Column transformation: Ép kiểu dữ liệu cho các cột (cast columns to specified types).
  • Sink transformation: Ghi dữ liệu vào bảng trong Azure Synapse Analytics dedicated SQL pool.

Yêu cầu chính cần đáp ứng 📋:

  • ✅ Tất cả hàng hợp lệ phải được ghi vào bảng đích (destination table).
  • ✅ Tránh lỗi truncation (cắt bớt dữ liệu) ở cột comment một cách chủ động (proactively), không để xảy ra khi insert.
  • ❌ Các hàng có giá trị comment gây lỗi truncation phải được ghi riêng vào file trong Blob storage (không discard, mà lưu để xử lý sau).

Vấn đề cốt lõi: Cột comment trong CSV có thể chứa dữ liệu dài hơn giới hạn của cột tương ứng trong SQL pool (ví dụ: varchar(100)), gây lỗi truncation khi insert. Cần phát hiện trước (proactive) bằng cách kiểm tra độ dài, tách riêng, và route đúng sink. Đây là câu hỏi multi-select (chọn 2 actions đúng), dựa trên best practices của ADF data flows (cập nhật đến 2026, với mapping data flows hỗ trợ conditional logic mạnh mẽ hơn).

🛠️ Luồng logic lý tưởng:

  1. Sau Derived Column, thêm Conditional Split để kiểm tra điều kiện (ví dụ: length(comment) > 500 nếu cột đích giới hạn 500 ký tự).
  2. Output "valid" → Sink gốc (SQL pool).
  3. Output "error" → Sink mới (Blob file).

📘 Tài liệu tham khảo:

✅ Đáp án đúng (chọn 2 actions sau)

Hai actions đúng là:

  • To the data flow, add a sink transformation to write the rows to a file in blob storage.
  • To the data flow, add a Conditional Split transformation to separate the rows that will cause truncation errors.

Lý do lựa chọn 🏆:

  • Để tránh truncation proactively, cần kiểm tra trước khi insert (không dùng fault tolerance của sink, vì sink fault tolerance chỉ discard hoặc fail, không route chủ động). Conditional Split cho phép tách luồng dựa trên expression (ví dụ: length(toString(comment)) > column_max_length), routing valid rows → sink SQL pool, error rows → sink Blob.
  • Thêm Sink mới cho Blob để lưu error rows (hỗ trợ CSV/Parquet format). Data flow hỗ trợ multiple sinks sau split, đảm bảo all valid rows vẫn ghi vào table mà không lỗi.
  • Kết hợp 2 actions này tạo luồng hoàn chỉnh, khớp 100% requirements (không filter/discards, mà separate & write both).

📝 Giải thích tất cả các phương án (đúng/sai)

  • ✅ To the data flow, add a sink transformation to write the rows to a file in blob storage.
    Đúng 🟢: Thêm sink này sau Conditional Split để ghi riêng error rows (comment gây truncation) vào Blob. Đảm bảo "rows containing comment values that will cause truncation errors" được lưu file, không mất dữ liệu. Sink Blob hỗ trợ format tự động (CSV/JSON), rất phù hợp cho error logging trong ADF data flows 2026.

  • ✅ To the data flow, add a Conditional Split transformation to separate the rows that will cause truncation errors.
    Đúng 🟢: Conditional Split là transformation lý tưởng để proactively detect truncation bằng expression (ví dụ: length(comment) > 1000). Tạo 2 outputs: "Valid" → sink SQL pool (all valid rows), "Error" → sink Blob. Tránh lỗi insert trực tiếp, khớp yêu cầu "avoid proactively".

  • ❌ To the data flow, add a filter transformation to filter out rows that will cause truncation errors.
    Sai 🔴: Filter chỉ loại bỏ (filter out) rows, dẫn đến mất dữ liệu error rows (không write to Blob). Không tách riêng mà discard, vi phạm "must be written to a file". Filter chỉ pass rows hợp lệ, không hỗ trợ multiple outputs như Split.

  • ❌ Add a select transformation to select only the rows that will cause truncation errors.
    Sai 🔴: Select dùng để chọn cột hoặc rename, không filter/condition dựa trên logic (không tách rows dựa truncation). Nó select "only error rows" nhưng không detect lỗi (không có expression condition), và không xử lý valid rows → SQL pool. Không proactive, chỉ là projection cơ bản.

💡 Lời khuyên thực tế (từ Azure Data Engineer): Test data flow bằng Debug mode với sample CSV có comment dài để verify split condition. Sử dụng Sink settings > Validate schema cho SQL pool để tự detect truncation limits! 🚀

Câu 50
You configure monitoring for an Azure Synapse Analytics implementation. The implementation uses PolyBase to load data from comma-separated value (CSV) files stored in Azure Data Lake Storage Gen2 using an external table.
Files with an invalid schema cause errors to occur.
You need to monitor for an invalid schema error.
For which error should you monitor?
  1. A EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect: Error [com.microsoft.polybase.client.KerberosSecureLogin] occurred while accessing external file.'
  2. B Cannot execute the query "Remote Query" against OLE DB provider "SQLNCLI11" for linked server "(null)". Query aborted- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 1 rows processed.
  3. C EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect: Error [Unable to instantiate LoginClass] occurred while accessing external file.'
  4. D EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect: Error [No FileSystem for scheme: wasbs] occurred while accessing external file.'
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào việc giám sát lỗi (monitoring for errors) trong một triển khai Azure Synapse Analytics (trước đây là SQL Data Warehouse). Cụ thể:

  • Hệ thống sử dụng PolyBase để tải dữ liệu từ các file CSV lưu trữ trong Azure Data Lake Storage Gen2 (ADLS Gen2) thông qua external table (bảng ngoài).
  • Vấn đề: Các file có schema không hợp lệ (invalid schema) gây ra lỗi khi load dữ liệu.
  • Yêu cầu: Xác định lỗi cụ thể cần giám sát để phát hiện trường hợp invalid schema.

Mục tiêu chính: Invalid schema thường xảy ra khi cấu trúc dữ liệu trong file CSV không khớp với định nghĩa của external table (ví dụ: số cột sai, kiểu dữ liệu không tương thích), dẫn đến việc reject rows (loại bỏ các dòng dữ liệu lỗi). PolyBase có cơ chế reject threshold (ngưỡng loại bỏ tối đa, mặc định là 0 rows), nếu vượt ngưỡng thì query sẽ bị hủy và báo lỗi cụ thể. Bạn cần monitor lỗi liên quan đến reject rows này để phát hiện vấn đề schema.

📘 Kiến thức cập nhật (đến 2026): Theo tài liệu Microsoft Azure Synapse Analytics mới nhất (phiên bản runtime PolyBase 3.0+ tích hợp trong Synapse SQL pools), lỗi invalid schema được xử lý qua reject policy trong PolyBase, không thay đổi lớn từ 2023-2026. Xem chi tiết tại:

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng:
Cannot execute the query "Remote Query" against OLE DB provider "SQLNCLI11" for linked server "(null)". Query aborted- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 1 rows processed.

Lý do 🛠️:
Lỗi này chính xác chỉ ra vấn đề invalid schema. PolyBase khi đọc file CSV từ external table (qua ADLS Gen2), nếu dữ liệu không khớp schema (ví dụ: cột thiếu hoặc kiểu dữ liệu sai), nó sẽ reject rows. Với reject threshold = 0 (mặc định), chỉ cần 1 row bị reject là query bị hủy ngay. Thông báo rõ ràng: "maximum reject threshold (0 rows) was reached" + "1 rows rejected out of total 1 rows processed". Đây là lỗi chuẩn để monitor invalid schema trong Synapse PolyBase. ✅

📋 Giải thích tất cả các phương án (đúng/sai)

Dưới đây là phân tích từng lựa chọn một cách chi tiết, giữ nguyên văn bản gốc tiếng Anh. Tôi sử dụng ✅ cho đúng và ❌ cho sai, kèm giải thích bằng tiếng Việt rõ ràng:

  • ❌ [SAI] EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect: Error [com.microsoft.polybase.client.KerberosSecureLogin] occurred while accessing external file.'
    🧨 Giải thích: Lỗi này liên quan đến xác thực Kerberos (KerberosSecureLogin) thất bại khi PolyBase cố kết nối đến HDFS/ADLS qua HdfsBridge (cầu nối Hadoop). Không phải do invalid schema, mà do vấn đề bảo mật/credential (ví dụ: ticket Kerberos hết hạn). Không cần monitor cho schema error.

  • ✅ [ĐÚNG] Cannot execute the query "Remote Query" against OLE DB provider "SQLNCLI11" for linked server "(null)". Query aborted- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 1 rows processed.
    🛠️ Giải thích: Như đã nêu ở phần đáp án đúng. Đây là lỗi reject threshold trực tiếp từ dữ liệu không khớp schema khi PolyBase đọc CSV. Hoàn hảo để monitor! (Đã giải thích chi tiết ở trên).

  • ❌ [SAI] EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect: Error [Unable to instantiate LoginClass] occurred while accessing external file.'
    🚫 Giải thích: Lỗi không thể khởi tạo lớp đăng nhập (LoginClass) trong Java runtime của PolyBase. Nguyên nhân: Config credential sai hoặc class login không tồn tại (ví dụ: sai Hadoop Auth class). Đây là vấn đề cấu hình authentication, không liên quan đến schema dữ liệu.

  • ❌ [SAI] EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect: Error [No FileSystem for scheme: wasbs] occurred while accessing external file.'
    🔌 Giải thích: Lỗi không hỗ trợ scheme "wasbs" (Azure Blob Storage scheme, dùng cho ADLS Gen2). PolyBase cần Hadoop config đúng (core-site.xml với wasbs handler). Đây là vấn đề cấu hình filesystem/URI, không phải invalid schema mà là setup external table sai từ đầu.

🏆 Kết luận và lời khuyên thực tế

Để monitor hiệu quả trong Azure Synapse: Sử dụng Azure Monitor + Log Analytics để query Kusto với các error message này, hoặc Synapse Studio diagnostic logs. Đặt alert cho reject threshold để phát hiện sớm invalid schema. Nếu cần test, dùng CREATE EXTERNAL TABLE với REJECT_VALUE = 0 và file CSV sai schema! 🚀