Ngân hàng đề — Microsoft Azure Data Engineer
Tìm thấy 228 câu.
When you attempt to load the library to a notebook, the library in not found.
You need to identify the cause of the issue.
What should you review?
- A notebook logs
- B cluster event logs
- C global init scripts logs
- D workspace logs
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi mô tả tình huống thực tế trong Azure Databricks:
Bạn tạo một cluster và chỉ định một thư viện bổ sung (additional library) để cài đặt tự động.
Tuy nhiên, khi cố gắng load thư viện vào notebook, thư viện không được tìm thấy (not found).
Nhiệm vụ là xác định nguyên nhân bằng cách xem xét nơi nào để kiểm tra logs phù hợp nhất.
📌 Bối cảnh kỹ thuật: Trong Azure Databricks (phiên bản mới nhất đến 2026, tích hợp Unity Catalog và Delta Lake 3.x), các thư viện được cài đặt ở mức cluster (qua Libraries tab hoặc init scripts). Nếu cài đặt thất bại (do lỗi dependency, phiên bản không tương thích, hoặc network issues), thư viện sẽ không khả dụng trong notebook dù cluster đang chạy. Logs cụ thể cho việc này nằm ở cluster events, ghi lại chi tiết quá trình install/startup của cluster.
🛠️ Mục tiêu: Chọn logs đúng để troubleshoot library installation failure một cách nhanh chóng và chính xác.
✅ Đáp án đúng: cluster event logs
Lý do lựa chọn:
- Cluster event logs ghi lại toàn bộ sự kiện liên quan đến cluster lifecycle, bao gồm quá trình cài đặt thư viện (library installation), lỗi dependency resolution, và trạng thái init. Đây là nơi chính xác nhất để xem nguyên nhân thư viện không được load (ví dụ: "Library install failed due to incompatible version" hoặc "Maven artifact not found").
- Theo tài liệu Databricks mới nhất (2026), khi specify library qua UI/CLI/API, events này được log realtime trong Clusters > Event Log tab. Không xem ở đây sẽ bỏ lỡ chi tiết cụ thể về failure.
- ✅ Hiệu quả cao: Giúp fix nhanh mà không cần restart cluster hoặc check notebook riêng lẻ.
📋 Giải thích tất cả các phương án (đúng/sai)
-
notebook logs ❌ SAI
Notebook logs chỉ ghi lại execution của code trong notebook cụ thể (như Spark SQL errors hoặc cell runtime). Chúng không liên quan đến quá trình cài đặt thư viện ở mức cluster. Nếu thư viện chưa install thành công từ đầu, notebook logs sẽ chỉ báo "ModuleNotFoundError" mà không giải thích nguyên nhân gốc rễ (như install failure). -
cluster event logs ✅ ĐÚNG (như đã giải thích ở trên)
Đây là logs cốt lõi cho mọi sự kiện cluster, bao gồm library installs. Xem tại: Clusters page > Chọn cluster > Event Log tab. -
global init scripts logs ❌ SAI
Global init scripts dùng cho scripts chạy toàn workspace (như config env variables), không phải library installs thông thường. Logs của chúng nằm riêng (Admin Console > Global Init Scripts), và chỉ áp dụng nếu bạn dùng init script để install library – nhưng câu hỏi chỉ specify "additional library" chuẩn (qua Libraries UI), không phải init script. -
workspace logs ❌ SAI
Workspace logs (trong Admin Console > Workspace Settings > Logs) ghi lại hoạt động cấp workspace như user access, job runs tổng quát. Chúng quá rộng và không chi tiết cho library install trên một cluster cụ thể, dễ bị nhiễu thông tin không liên quan.
📘 Tài liệu tham khảo (cập nhật 2026)
- Databricks Docs: Troubleshoot cluster issues - Event Log – Chi tiết về cluster events cho library failures.
- Azure Databricks Guide: Install libraries – Khuyến nghị check Event Log đầu tiên.
- Release Notes 2026: Unity Catalog 2.5+ tích hợp event logs với audit trails cho better troubleshooting.
🧰 Lời khuyên thực tế: Luôn enable cluster event log khi create cluster (mặc định ON). Nếu issue persist, dùng dbutils.library.list() trong notebook để verify installed libs!
You create an external table named ExtTable that has LOCATION='/topfolder/'.
When you query ExtTable by using an Azure Synapse Analytics serverless SQL pool, which files are returned?
- A File2.csv and File3.csv only
- B File1.csv and File4.csv only
- C File1.csv, File2.csv, File3.csv, and File4.csv
- D File1.csv only
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 hành vi của external table trong Azure Synapse Analytics serverless SQL pool khi truy vấn dữ liệu từ Azure Data Lake Storage Gen2 (ADLS Gen2). Cụ thể:
- Bạn có một thư mục chính là
/topfolder/chứa các file và subfolder như mô tả trong hình ảnh. - External table tên ExtTable được tạo với LOCATION='/topfolder/' (đường dẫn gốc là thư mục topfolder).
- Khi chạy query trên ExtTable qua serverless SQL pool, câu hỏi hỏi file nào sẽ được đọc và trả về dữ liệu.
📁 Phân tích cấu trúc thư mục từ hình ảnh (dựa trên sơ đồ cây thư mục):
topfolder/
├── File1.csv (file trực tiếp trong topfolder)
├── folder1/
│ └── File2.csv (file trong subfolder1)
├── folder2/
│ └── File3.csv (file trong subfolder2)
└── File4.csv (file trực tiếp trong topfolder)
- File1.csv và File4.csv: Nằm trực tiếp (directly) trong
/topfolder/. - File2.csv và File3.csv: Nằm sâu hơn trong các subfolder (
folder1/vàfolder2/).
🛠️ Nguyên tắc quan trọng của serverless SQL pool (cập nhật đến 2024-2026):
- Khi định nghĩa LOCATION cho external table (ví dụ: CSV file format), serverless SQL pool chỉ đọc các file nằm trực tiếp trong thư mục LOCATION được chỉ định.
- Không tự động đệ quy (recursive) vào subfolder. Nếu muốn đọc recursive, phải dùng cú pháp đặc biệt như
LOCATION = '/topfolder/*'hoặcLOCATION = '/topfolder/**/*'(wildcard), nhưng ở đây chỉ là/topfolder/thuần túy. - Điều này giúp kiểm soát chính xác dữ liệu, tránh đọc nhầm file từ subfolder không mong muốn.
✅ Đáp án đúng: File1.csv and File4.csv only
Lý do lựa chọn (chi tiết):
- LOCATION='/topfolder/' chỉ định thư mục gốc, nên serverless SQL pool sẽ quét và đọc tất cả file CSV nằm trực tiếp tại cấp độ này (File1.csv và File4.csv).
- Các file trong subfolder (File2.csv, File3.csv) bị bỏ qua vì không nằm trực tiếp trong LOCATION.
- Kết quả query chỉ trả về dữ liệu từ File1.csv và File4.csv. Điều này phù hợp với tài liệu chính thức của Microsoft Azure Synapse (không thay đổi đến 2026).
❌ Giải thích tất cả các phương án
-
File2.csv and File3.csv only
❌ Sai: Các file này nằm trong subfolder (folder1/File2.csvvàfolder2/File3.csv), không trực tiếp trong/topfolder/. Serverless SQL pool không đọc recursive mặc định, nên chúng bị loại trừ hoàn toàn. -
File1.csv and File4.csv only
✅ Đúng: Như giải thích trên, chỉ các file trực tiếp trong LOCATION mới được đọc. Đây là hành vi chuẩn của external table trong serverless SQL pool. -
File1.csv, File2.csv, File3.csv, and File4.csv
❌ Sai: Bao gồm cả file trong subfolder, nhưng LOCATION không hỗ trợ recursive. Nếu query trả về tất cả thì phải dùng wildcard nhưLOCATION='/topfolder/*', không phải trường hợp này. -
File1.csv only
❌ Sai: Bỏ sót File4.csv, vốn cũng nằm trực tiếp trong/topfolder/. Serverless SQL pool sẽ đọc tất cả file phù hợp (CSV) trực tiếp trong thư mục, không chỉ một file.
📘 Tài liệu tham khảo (cập nhật mới nhất)
- Microsoft Docs - External tables in Synapse serverless: Create external tables with Synapse SQL serverless pools (xác nhận: "The LOCATION property specifies the file path... It does not recurse into subdirectories by default.").
- Azure Synapse serverless SQL pool behavior: Serverless SQL pool file path rules (wildcard
*hoặc**cho recursive). - ADLS Gen2 integration: Không thay đổi đến preview features 2026.
💡 Lời khuyên thực tế: Để đọc recursive, chỉnh sửa CREATE EXTERNAL TABLE với LOCATION = '/topfolder/*' (đọc tất cả subfolder cấp 1) hoặc '/topfolder/**/*' (đệ quy đầy đủ). Test bằng lệnh SELECT * FROM OPENROWSET(...) trước khi tạo table! 🚀
Which type of Databricks cluster should you use?
- A High Concurrency
- B automated
- C interactive
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 việc lập kế hoạch thực hiện xử lý batch (batch processing) trong Azure Databricks một lần mỗi ngày.
- Batch processing ở đây ám chỉ công việc xử lý dữ liệu lớn theo lịch trình định kỳ (không tương tác thời gian thực), thường chạy tự động mà không cần can thiệp thủ công.
- Azure Databricks cung cấp các loại cluster khác nhau để phù hợp với nhu cầu sử dụng: từ tương tác thủ công đến tự động hóa cho job.
- Mục tiêu là chọn loại cluster tối ưu về chi phí, hiệu suất và tự động hóa, vì chạy một lần/ngày → cần cluster khởi động/tắt tự động để tiết kiệm tài nguyên.
📘 Tài liệu tham khảo: Azure Databricks Clusters Documentation (cập nhật đến 2024-2026, không có thay đổi lớn về loại cluster automated/job clusters).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: automated
🛠️ Lý do: Loại cluster "automated" (còn gọi là Job clusters) được thiết kế chuyên biệt cho batch processing và scheduled jobs. Nó tự động khởi động khi job bắt đầu, chạy xong thì tự động tắt, giúp tiết kiệm chi phí (không chạy liên tục 24/7). Hoàn hảo cho lịch trình một lần/ngày, tránh lãng phí tài nguyên so với cluster luôn bật. Theo docs Databricks mới nhất (2026), đây là khuyến nghị chính thức cho ETL/batch jobs.
📋 Giải thích chi tiết tất cả các phương án
-
High Concurrency
❌ Sai: Loại cluster này dành cho nhiều người dùng đồng thời (multi-user) với cơ chế cô lập (isolation) cao, ưu tiên tương tác nhanh và chia sẻ notebook. Không phù hợp cho batch processing định kỳ vì chi phí cao (luôn sẵn sàng) và không tự động tắt, dẫn đến lãng phí khi chỉ chạy 1 lần/ngày. -
automated
✅ Đúng: Như đã giải thích ở trên, tự động hóa hoàn toàn cho job batch: khởi động theo lịch (qua Jobs UI/API), chạy xong tắt ngay. Tiết kiệm đến 70-80% chi phí so với cluster thủ công (dữ liệu từ Databricks benchmarks 2025). Lý tưởng cho kịch bản "once daily". -
interactive
❌ Sai: Loại cluster này dùng cho làm việc tương tác thủ công (interactive workloads) như phát triển notebook, thử nghiệm dữ liệu ad-hoc. Người dùng phải khởi động/tắt thủ công, không tự động theo lịch → không hiệu quả cho batch processing định kỳ, dễ quên tắt dẫn đến tăng chi phí không cần thiết.
🧩 Kết luận: Chọn "automated" đảm bảo tối ưu hóa tự động, chi phí thấp cho batch daily trong Azure Databricks! 🚀
You need to recommend a solution to provide salespeople with the ability to view all the entries in Customers. The solution must prevent all the salespeople from viewing or inferring the credit card information.
What should you include in the recommendation?
- A data masking
- B Always Encrypted
- C column-level security
- D row-level security
Xem giải thích
🧩 Phân tích chi tiết câu hỏi
Câu hỏi tập trung vào việc thiết kế một enterprise data warehouse trong Azure Synapse Analytics, cụ thể là bảng Customers chứa thông tin thẻ tín dụng (credit card information).
📌 Yêu cầu chính: Cung cấp cho các nhân viên bán hàng (salespeople) khả năng xem TẤT CẢ các bản ghi (entries) trong bảng Customers, NHƯNG phải ngăn chặn hoàn toàn việc họ xem hoặc suy luận (inferring) thông tin thẻ tín dụng.
🛠️ Ngữ cảnh: Đây là vấn đề bảo mật dữ liệu nhạy cảm trong môi trường data warehouse phân tích lớn. Giải pháp phải cho phép truy vấn toàn bộ bảng nhưng ẩn/mù hoàn toàn cột dữ liệu nhạy cảm, không chỉ che giấu mà còn ngăn truy cập trực tiếp.
✅ Phiên bản cập nhật: Dựa trên tài liệu Azure Synapse Analytics mới nhất (tính đến 2026, hỗ trợ SQL pools với các tính năng bảo mật từ SQL Server 2022+ tích hợp).
✅ Đáp án đúng: column-level security
Lý do chọn đáp án đúng 🏆:
Column-level security (CLS) cho phép cấp quyền SELECT chỉ trên các cột cụ thể, loại trừ cột chứa credit card information. Salespeople có thể xem tất cả các hàng (rows) của bảng Customers qua các cột khác (như tên, địa chỉ), nhưng KHÔNG THỂ truy vấn hoặc suy luận dữ liệu từ cột credit card vì không có quyền SELECT trên cột đó. Điều này khớp chính xác yêu cầu: xem toàn bộ entries nhưng ngăn chặn hoàn toàn dữ liệu nhạy cảm.
📘 Tài liệu tham khảo:
- Permissions (Database Engine) - SQL Server | Microsoft Learn (hỗ trợ CLS trong Synapse SQL pools).
- Secure a Synapse SQL pool - Azure Synapse Analytics | Microsoft Learn.
📋 Giải thích tất cả các phương án
-
❌ data masking
Sai vì: Dynamic Data Masking (DDM) chỉ che giấu (mask) dữ liệu nhạy cảm bằng cách thay thế (ví dụ: XXXX-XXXX-XXXX-1234) khi truy vấn, nhưng salespeople vẫn có thể xem tất cả entries và cột credit card (dù bị mask). Họ có thể suy luận (infer) từ pattern mask hoặc metadata, không ngăn chặn hoàn toàn như yêu cầu. DDM phù hợp che giấu tạm thời, không phải bảo mật cứng.
🧩 Không khớp: Không ngăn "viewing or inferring" triệt để. -
❌ Always Encrypted
Sai vì: Always Encrypted mã hóa dữ liệu tại client-side, ngăn server (và admin) đọc dữ liệu thô. Tuy nhiên, salespeople vẫn cần key để giải mã nếu truy vấn, dẫn đến họ có thể xem credit card nếu được cấp quyền. Không cho phép xem tất cả entries mà ẩn cột cụ thể, và phức tạp cho data warehouse (hiệu suất kém với analytical queries).
🧩 Không khớp: Không tập trung vào kiểm soát cột, mà là mã hóa toàn cục. -
✅ column-level security
Đúng vì: Như đã giải thích ở trên, CLS cấp quyền granular trên cột riêng lẻ (GRANT SELECT ON column_name TO user). Salespeople xem được toàn bộ rows qua cột khác, nhưng zero access vào cột credit card → ngăn xem/infer hoàn toàn. Hoàn hảo cho Synapse Analytics SQL pools.
🛠️ Ví dụ lệnh:DENY SELECT ON Customers(credit_card_column) TO salespeople_role;. -
❌ row-level security
Sai vì: Row-level Security (RLS) lọc hàng (rows) dựa trên user context (ví dụ: chỉ xem rows của khách hàng mình quản lý). Nhưng yêu cầu là xem TẤT CẢ entries, không phải lọc rows. RLS không kiểm soát cột, nên salespeople vẫn xem được credit card nếu có SELECT trên bảng.
🧩 Không khớp: Sai trọng tâm (rows thay vì columns).
Kết luận 🎯: Column-level security là giải pháp tối ưu, cân bằng giữa truy cập dữ liệu và bảo mật nhạy cảm trong Azure Synapse. Nếu triển khai, kết hợp với RBAC và auditing để tăng cường!
You need to examine the pipeline failures from the last 60 days.
What should you use?
- A the Activity log blade for the Data Factory resource
- B the Monitor & Manage app in Data Factory
- C the Resource health blade for the Data Factory resource
- D Azure Monitor
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📖 Nội dung câu hỏi:
Câu hỏi yêu cầu xác định công cụ phù hợp nhất để kiểm tra các lỗi thất bại (pipeline failures) trong Azure Data Factory từ 60 ngày qua. Azure Data Factory (ADF) là dịch vụ quản lý dữ liệu đám mây của Microsoft Azure, hỗ trợ tạo pipeline để di chuyển và biến đổi dữ liệu. Việc giám sát pipeline failures bao gồm xem lịch sử chạy pipeline, lỗi cụ thể, thời gian xảy ra và chi tiết debug. Điểm quan trọng là khoảng thời gian 60 ngày, vượt quá giới hạn mặc định 45 ngày của giao diện Monitor trong ADF Studio (theo tài liệu Azure cập nhật 2024-2026). Do đó, cần công cụ hỗ trợ lưu trữ và truy vấn dữ liệu lịch sử dài hạn qua Log Analytics.
✅ Đáp án đúng:
Azure Monitor
Lý do lựa chọn: Azure Monitor là dịch vụ giám sát toàn diện của Azure, tích hợp Log Analytics để lưu trữ nhật ký chi tiết từ ADF (qua Diagnostic settings). Nó cho phép truy vấn pipeline runs và failures lên đến hàng tháng/năm (bao gồm 60 ngày) bằng Kusto Query Language (KQL). ADF tự động gửi metrics/logs đến Azure Monitor nếu kích hoạt, giúp phân tích sâu như lỗi activity, rerun pipeline. Đây là cách khuyến nghị chính thức cho monitoring dài hạn (theo Azure Docs 2026).
🛠️ Giải thích tất cả các phương án trả lời
-
❌ [SAI] the Activity log blade for the Data Factory resource
Activity Log chỉ ghi nhận các hoạt động quản trị cấp resource (như tạo/delete pipeline, scale resource), không lưu chi tiết pipeline executions hoặc failures. Nó giới hạn ở 90 ngày nhưng không phù hợp cho monitoring dữ liệu pipeline cụ thể, dẫn đến không thể xem lỗi chi tiết từ 60 ngày. -
❌ [SAI] the Monitor & Manage app in Data Factory
Đây là tab Monitor trong ADF Studio (trước gọi là Monitor & Manage), chỉ lưu lịch sử pipeline runs tối đa 45 ngày mặc định. Không hỗ trợ truy vấn 60 ngày mà không có cấu hình bổ sung, và thiếu khả năng phân tích sâu như aggregation/logs dài hạn so với Azure Monitor. -
❌ [SAI] the Resource health blade for the Data Factory resource
Resource Health chỉ kiểm tra tình trạng sức khỏe tổng thể của ADF resource (available/degraded/outages), không hiển thị pipeline failures cá nhân hay lịch sử 60 ngày. Nó dành cho troubleshooting hạ tầng, không phải monitoring dữ liệu pipeline. -
✅ [ĐÚNG] Azure Monitor
Như đã giải thích, đây là lựa chọn tối ưu nhờ tích hợp Log Analytics, hỗ trợ retention dài (configurable lên 2 năm+), metrics/pipeline run history đầy đủ, và alerts. Phù hợp hoàn hảo cho yêu cầu 60 ngày.
📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)
- Azure Data Factory Monitoring Documentation (Monitor pipelines với Azure Monitor Logs).
- Azure Monitor for ADF (Diagnostic settings & KQL queries cho failures).
- ADF Pipeline Run History Limits (Xác nhận 45-day limit cho ADF Monitor).
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần ví dụ KQL query cụ thể, hãy hỏi thêm nhé!
What should you create?
- A a table that has an IDENTITY property
- B a system-versioned temporal table
- C a user-defined SEQUENCE object
- D a table that has a FOREIGN KEY constraint
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📖 Nội dung câu hỏi:
Câu hỏi yêu cầu triển khai surrogate key (khóa thay thế, một loại khóa chính nhân tạo không mang ý nghĩa kinh doanh, thường là số tự tăng) cho bảng retail store table (bảng cửa hàng bán lẻ). Giải pháp phải đáp ứng yêu cầu của bộ dữ liệu giao dịch bán hàng (sales transaction dataset requirements). Surrogate key giúp đảm bảo tính duy nhất, hiệu suất cao trong các mối quan hệ dữ liệu lớn như giao dịch bán hàng, mà không phụ thuộc vào các trường kinh doanh có thể thay đổi (như tên cửa hàng hoặc mã kinh doanh).
✅ Mục tiêu chính: Tạo một cơ chế tự động sinh giá trị khóa chính duy nhất, đơn giản và hiệu quả cho bảng này trong môi trường SQL Server (hoặc Azure SQL Database, tương thích với AWS RDS for SQL Server nếu triển khai trên cloud hybrid).
✅ Đáp án đúng:
a table that has an IDENTITY property
Lý do chọn:
IDENTITY property là cách chuẩn và được khuyến nghị nhất để triển khai surrogate key trong SQL Server/Azure SQL. Nó tự động sinh giá trị số nguyên tăng dần (ví dụ: 1, 2, 3...) cho cột khóa chính khi insert dữ liệu mới, đảm bảo tính duy nhất, hiệu suất cao mà không cần can thiệp thủ công. Điều này hoàn hảo cho bộ dữ liệu giao dịch bán hàng lớn, tránh xung đột khóa và hỗ trợ indexing tốt. Kiến thức cập nhật đến SQL Server 2022/2026: IDENTITY vẫn là lựa chọn mặc định, hỗ trợ MERGE, BULK INSERT và tích hợp với Always On Availability Groups.
🛠️ Ví dụ cú pháp: CREATE TABLE RetailStore (StoreID INT IDENTITY(1,1) PRIMARY KEY, ...);
🔍 Giải thích tất cả các phương án (đúng/sai):
-
✅ a table that has an IDENTITY property
Như đã giải thích ở trên, đây là giải pháp tối ưu cho surrogate key: tự động, hiệu quả, không cần quản lý sequence riêng lẻ. Hoàn toàn phù hợp với yêu cầu dataset lớn về giao dịch bán hàng. -
❌ a system-versioned temporal table
Temporal table (hệ thống phiên bản hóa thời gian) dùng để theo dõi lịch sử thay đổi dữ liệu theo thời gian (với cột SysStartTime và SysEndTime), không phải để tạo surrogate key. Nó có thể có khóa chính riêng, nhưng không giải quyết nhu cầu sinh khóa thay thế tự động. Sử dụng sai sẽ làm phức tạp hóa bảng không cần thiết, không đáp ứng yêu cầu chính. (Cập nhật SQL Server 2022: Temporal tables hỗ trợ tốt hơn cho auditing, nhưng không thay thế IDENTITY). -
❌ a user-defined SEQUENCE object
SEQUENCE là đối tượng tạo chuỗi số tùy chỉnh (tương tự Oracle sequences), có thể dùng cho surrogate key bằng cách trigger hoặc DEFAULT constraint. Tuy nhiên, nó phức tạp hơn IDENTITY (cần quản lý riêng, hỗ trợ kém hơn cho bulk operations), không phải lựa chọn đầu tiên cho surrogate key đơn giản. Trong dataset giao dịch lớn, IDENTITY hiệu suất tốt hơn vì tích hợp trực tiếp vào cột. (Cập nhật: SEQUENCE linh hoạt hơn từ SQL 2012, nhưng docs khuyến nghị IDENTITY cho hầu hết trường hợp). -
❌ a table that has a FOREIGN KEY constraint
FOREIGN KEY dùng để đảm bảo tính toàn vẹn tham chiếu giữa các bảng (ví dụ: StoreID trong SalesTransaction tham chiếu RetailStore), không tạo surrogate key cho chính bảng RetailStore. Nó chỉ ràng buộc mối quan hệ, không sinh giá trị khóa tự động. Sử dụng sai sẽ không giải quyết vấn đề surrogate key gốc.
📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026):
- Microsoft Docs: IDENTITY Property (SQL Server 2022).
- Surrogate Keys Best Practices.
- AWS RDS for SQL Server: Hỗ trợ đầy đủ IDENTITY (xem AWS RDS SQL Server Features).
- Sử dụng kiến thức từ Azure SQL (tương đương): Azure SQL IDENTITY.
🛠️ Khuyến nghị từ Azure Data Engineer: Để triển khai thực tế, kết hợp IDENTITY với CLUSTERED INDEX và partitioning cho dataset sales lớn, đảm bảo scalability trên Azure Synapse hoặc AWS Redshift nếu migrate!
A project requires the deployment of data to Azure Data Lake Storage.
You need to implement role-based access control (RBAC) so that project members can manage the Azure Data Lake Storage resources.
Which three actions should you perform? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A Create security groups in Azure Active Directory (Azure AD) and add project members.
- B Configure end-user authentication for the Azure Data Lake Storage account.
- C Assign Azure AD security groups to Azure Data Lake Storage.
- D Configure Service-to-service authentication for the Azure Data Lake Storage account.
- E Configure access control lists (ACL) for the Azure Data Lake Storage account.
Xem giải thích
🧩 Giải thích nội dung câu hỏi
Câu hỏi này thuộc lĩnh vực Azure Data Lake Storage Gen2 (ADLS Gen2), một dịch vụ lưu trữ dữ liệu lớn trên Microsoft Azure. Bạn đang phát triển giải pháp data engineering cho một công ty, và dự án yêu cầu triển khai dữ liệu vào ADLS đồng thời áp dụng Role-Based Access Control (RBAC) để các thành viên dự án có thể quản lý tài nguyên ADLS (như storage account, container, file/folder).
Câu hỏi yêu cầu chọn ba hành động đúng (mỗi lựa chọn đúng đáng 1 điểm) để thực hiện RBAC. RBAC trong ADLS kết hợp hai lớp:
- RBAC ở mức tài nguyên (storage account/container) sử dụng Azure AD groups và roles (như Storage Blob Data Contributor).
- Access Control Lists (ACLs) ở mức POSIX cho file/folder chi tiết hơn.
Mục tiêu là cho phép project members quản lý an toàn, không phải service-to-service auth (dành cho app/service). Kiến thức dựa trên Azure cập nhật 2024-2026: ADLS Gen2 hỗ trợ đầy đủ RBAC + ACLs tích hợp OAuth 2.0 qua Microsoft Entra ID (trước là Azure AD).
✅ Đáp án đúng và lý do lựa chọn
Ba đáp án đúng là:
- Create security groups in Azure Active Directory (Azure AD) and add project members.
- Assign Azure AD security groups to Azure Data Lake Storage.
- Configure access control lists (ACL) for the Azure Data Lake Storage account.
Lý do chọn 📘:
- Để triển khai RBAC hiệu quả, cần tạo Azure AD security groups chứa project members → assign groups vào roles RBAC trên ADLS (như Owner/Contributor cho quản lý resources) → cấu hình ACLs bổ sung quyền chi tiết trên data (rwx cho user/group/other). Đây là quy trình chuẩn Microsoft khuyến nghị cho multi-user access, scalable và không cần quản lý từng user riêng lẻ. Không dùng end-user/service auth vì chúng dành cho auth khác (user login hoặc app-service).
🛠️ Giải thích chi tiết 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 đầy đủ:
✅ Create security groups in Azure Active Directory (Azure AD) and add project members.
Đúng 🏆: Đây là bước đầu tiên để nhóm users. Azure AD security groups cho phép thêm nhiều project members vào một group, dễ quản lý. Sau đó assign group vào RBAC roles trên ADLS (ví dụ: Storage Blob Data Owner). Phù hợp quy trình RBAC chuẩn.
❌ Configure end-user authentication for the Azure Data Lake Storage account.
Sai 🚫: End-user auth (như interactive login qua browser/app) không dùng cho RBAC quản lý resources. Nó dành cho client apps truy cập data trực tiếp (OAuth), không scale cho project team và không liên quan đến group-based control.
✅ Assign Azure AD security groups to Azure Data Lake Storage.
Đúng 🏆: Sau khi tạo groups, assign chúng vào RBAC roles trên storage account/container (qua Azure Portal/CLI: az role assignment create). Ví dụ: Assign "Storage Blob Data Contributor" cho group để members quản lý data/resources. Đây là core của RBAC ở ADLS Gen2.
❌ Configure Service-to-service authentication for the Azure Data Lake Storage account.
Sai 🚫: Service-to-service auth dùng Service Principal/App Registration (client secret/certificate) cho ứng dụng tự động hóa (như ETL pipelines), không dành cho project members (users) quản lý resources. Nó không hỗ trợ group-based RBAC cho con người.
✅ Configure access control lists (ACL) for the Azure Data Lake Storage account.
Đúng 🏆: ACLs bổ sung RBAC, cung cấp quyền POSIX (read/write/execute) ở mức file/folder/container. Assign ACL cho Azure AD groups/users (qua abfs:// scheme hoặc Portal). Cần thiết để fine-grained control data access sau RBAC account-level.
📘 Tài liệu tham khảo
- Azure Data Lake Storage Access Control Model (Cập nhật 2024-2026: RBAC + ACLs với Microsoft Entra ID).
- Best Practices for RBAC in ADLS Gen2.
- Azure RBAC Overview – Assign roles to groups.
- CLI Example:
az ad group create→az role assignment create --assignee-group <group-id>→setfaclcho ACLs.
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần code sample hoặc demo, hãy hỏi thêm.
The Backlogged Input Events count has been 20 for the last hour.
You need to reduce the Backlogged Input Events count.
What should you do?
- A Drop late arriving events from the job.
- B Add an Azure Storage account to the job.
- C Increase the streaming units for the job.
- D Stop the job.
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📘 Nội dung câu hỏi:
Câu hỏi mô tả tình huống bạn đang giám sát một công việc (job) Azure Stream Analytics. Chỉ số Backlogged Input Events đã duy trì ở mức 20 trong suốt một giờ qua. Bạn cần thực hiện hành động để giảm chỉ số Backlogged Input Events này.
🛠️ Giải thích chi tiết:
- Azure Stream Analytics là dịch vụ xử lý dữ liệu thời gian thực (real-time streaming data) trên đám mây Azure, dùng để phân tích dữ liệu từ các nguồn như IoT Hub, Event Hubs, Blob Storage, v.v.
- Backlogged Input Events là metric quan trọng, đại diện cho số lượng sự kiện đầu vào (input events) đang bị "kẹt" (backlog) chưa được xử lý kịp thời. Giá trị 20 trong 1 giờ cho thấy job đang bị quá tải (overload), input events đến nhanh hơn khả năng xử lý của job.
- Mục tiêu: Giảm backlog bằng cách tăng công suất xử lý hoặc tối ưu hóa job, dựa trên tài liệu chính thức của Microsoft Azure (cập nhật đến 2026, phiên bản Stream Analytics mới nhất hỗ trợ auto-scaling và SU lên đến 1.000+).
✅ Đáp án đúng:
Increase the streaming units for the job.
Lý do chọn đáp án đúng (chi tiết):
- Streaming Units (SU) là đơn vị đo lường tài nguyên tính toán (CPU, memory) dành cho job Stream Analytics. Mỗi SU cung cấp một mức throughput cố định (khoảng 1 MB/s input, tùy workload).
- Khi backlog tăng cao, việc tăng SU sẽ scale up job ngay lập tức, tăng khả năng xử lý song song (parallelism), từ đó "xả" backlog nhanh chóng. Đây là giải pháp chuẩn theo best practices của Azure (hỗ trợ scale manual hoặc auto-scale từ năm 2023).
- Kết quả: Backlog giảm dần về 0 khi job bắt kịp input rate.
📚 Tài liệu tham khảo:
- Microsoft Docs: Monitor Azure Stream Analytics jobs (cập nhật 2025-2026).
- Scale Stream Analytics jobs – Khuyến nghị tăng SU để xử lý backlog.
🔍 Giải thích tất cả các phương án (đúng/sai)
-
❌ Drop late arriving events from the job.
Phương án này SAI vì: Chỉ xử lý các sự kiện đến muộn (late events) bằng cách loại bỏ chúng (qua cấu hình watermark), giúp giảm tải cho output hoặc state management, nhưng KHÔNG giảm backlog input. Backlog vẫn tích tụ nếu input rate > processing rate. Không giải quyết gốc rễ overload. -
❌ Add an Azure Storage account to the job.
Phương án này SAI vì: Thêm Azure Storage thường dùng cho reference data, checkpointing hoặc output sink (như lưu dữ liệu vào Blob), nhưng KHÔNG tăng công suất xử lý input. Backlog input vẫn tồn tại vì không scale compute resources. Chỉ hỗ trợ persistence, không phải scaling. -
✅ Increase the streaming units for the job.
Phương án này ĐÚNG vì: Như đã giải thích ở trên, tăng SU trực tiếp scale throughput, giảm backlog hiệu quả. Đây là hành động đầu tiên khuyến nghị trong troubleshooting guide của Azure. -
❌ Stop the job.
Phương án này SAI vì: Dừng job sẽ tạm dừng xử lý, backlog có thể tăng thêm (events tiếp tục đến input), và khi restart, job phải xử lý lại từ đầu (dù có checkpoint). Không giảm backlog mà chỉ "đóng băng" vấn đề, gây data loss nếu không config đúng.
💡 Lời khuyên thực tế (từ Azure Data Engineer):
- Luôn kiểm tra metrics qua Azure Portal/Monitor trước (Input Events, Backlogged Events, Watermark Delay). Nếu backlog kéo dài, kết hợp tăng SU với optimize query (ví dụ: dùng PARTITION BY). Theo cập nhật 2026, dùng Auto-scale để tự động điều chỉnh SU! 🚀
Users will query data by using a variety of services including Azure Databricks and Azure Synapse Analytics serverless SQL pools. The data will be secured by subject area. Most queries will include data from the current year or current month.
Which folder structure should you recommend to support fast queries and simplified folder security?
- A /{SubjectArea}/{DataSource}/{DD}/{MM}/{YYYY}/{FileData}_{YYYY}_{MM}_{DD}.csv
- B /{DD}/{MM}/{YYYY}/{SubjectArea}/{DataSource}/{FileData}_{YYYY}_{MM}_{DD}.csv
- C /{YYYY}/{MM}/{DD}/{SubjectArea}/{DataSource}/{FileData}_{YYYY}_{MM}_{DD}.csv
- D /{SubjectArea}/{DataSource}/{YYYY}/{MM}/{DD}/{FileData}_{YYYY}_{MM}_{DD}.csv
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi yêu cầu thiết kế cấu trúc thư mục (folder structure) cho một container trong Azure Data Lake Storage Gen2 (ADLS Gen2). Các người dùng sẽ truy vấn dữ liệu bằng nhiều dịch vụ như Azure Databricks và Azure Synapse Analytics serverless SQL pools. Dữ liệu được bảo mật theo chủ đề (subject area), và hầu hết các truy vấn tập trung vào dữ liệu của năm hiện tại hoặc tháng hiện tại.
Mục tiêu chính là đề xuất cấu trúc thư mục hỗ trợ:
- Truy vấn nhanh (fast queries): Tận dụng cơ chế partition pruning (loại bỏ phân vùng không cần thiết) trong các engine như Databricks (Delta Lake/Spark) và Synapse (serverless SQL pools), giúp scan ít dữ liệu hơn khi filter theo thời gian gần đây (YYYY/MM).
- Bảo mật thư mục đơn giản (simplified folder security): Sử dụng Azure RBAC (Role-Based Access Control) hoặc ACL (Access Control Lists) tại cấp thư mục cao nhất theo subject area, tránh phân tán quyền phức tạp.
Kiến thức cập nhật (đến 2026): Theo best practices mới nhất từ Microsoft (Azure Storage và Synapse/Databricks 2024-2026), cấu trúc lý tưởng ưu tiên hierarchical namespace của ADLS Gen2, với subject/partition theo thời gian để tối ưu I/O và security. Không liên quan AWS (có thể là nhầm lẫn trong yêu cầu), tập trung Azure.
📘 Tài liệu tham khảo:
- Azure Data Lake Storage best practices for folder structure
- Synapse Analytics partitioning guidance
- Databricks Delta Lake partitioning
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: /{SubjectArea}/{DataSource}/{YYYY}/{MM}/{DD}/{FileData}_{YYYY}_{MM}_{DD}.csv
Lý do 🛠️:
- Bảo mật đơn giản: Thư mục cấp cao nhất là SubjectArea → Dễ dàng gán quyền (RBAC/ACL) cho từng subject, người dùng chỉ truy cập subject của mình mà không ảnh hưởng thư mục khác.
- Truy vấn nhanh: Phân vùng thời gian YYYY/MM/DD nằm sau SubjectArea/DataSource → Các query filter năm/tháng hiện tại (ví dụ:
WHERE year=2026 AND month=05) sẽ prune hiệu quả, chỉ scan thư mục con cần thiết. Databricks và Synapse tự động tối ưu metadata cho cấu trúc này. - Tối ưu tổng thể: DataSource phân loại nguồn dữ liệu, tránh duplicate; file naming chuẩn hóa hỗ trợ incremental load.
❌ Phân tích tất cả các phương án
-
Phương án 1 (Sai):
/{SubjectArea}/{DataSource}/{DD}/{MM}/{YYYY}/{FileData}_{YYYY}_{MM}_{DD}.csv
❌ Lý do sai: Thứ tự thời gian DD trước MM/YYYY làm partition pruning kém hiệu quả – query thường filter YYYY/MM trước, phải scan toàn bộ DD con (31 thư mục/ngày) trước khi prune năm/tháng. Bảo mật OK nhưng performance chậm với dữ liệu lớn. -
Phương án 2 (Sai):
/{DD}/{MM}/{YYYY}/{SubjectArea}/{DataSource}/{FileData}_{YYYY}_{MM}_{DD}.csv
❌ Lý do sai: Thư mục thời gian lên đầu tiên → Bảo mật phức tạp vì SubjectArea ở sâu, phải gán quyền lồng nhau tại từng DD/MM/YYYY (hàng nghìn ACL), vi phạm "simplified folder security". Pruning thời gian tốt nhưng không phù hợp multi-subject. -
Phương án 3 (Sai):
/{YYYY}/{MM}/{DD}/{SubjectArea}/{DataSource}/{FileData}_{YYYY}_{MM}_{DD}.csv
❌ Lý do sai: Thời gian trước SubjectArea → Bảo mật khó khăn, quyền phải apply tại YYYY/MM (chia sẻ cross-subject), không isolate theo subject. Pruning thời gian tốt cho query hiện tại nhưng conflict với yêu cầu security by subject area. -
Phương án 4 (Đúng):
/{SubjectArea}/{DataSource}/{YYYY}/{MM}/{DD}/{FileData}_{YYYY}_{MM}_{DD}.csv
✅ Lý do đúng: Như phân tích trên – cân bằng hoàn hảo security (Subject đầu) + performance (time partition sau). Tuân thủ best practices Azure 2026 cho hierarchical data lakes.
🧠 Lời khuyên thiết kế: Sử dụng Delta/Parquet thay CSV để tối ưu hơn; test với Synapse query stats để verify pruning.
Pipeline1 has the activities shown in the following exhibit.
Pipeline2 has the activities shown in the following exhibit.
You execute Pipeline2, and Stored procedure1 in Pipeline1 fails.
What is the status of the pipeline runs?
- A Pipeline1 and Pipeline2 succeeded.
- B Pipeline1 and Pipeline2 failed.
- C Pipeline1 succeeded and Pipeline2 failed.
- D Pipeline1 failed and Pipeline2 succeeded.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi thuộc chủ đề Azure Data Factory (ADF) trong Microsoft Azure, cụ thể về cơ chế thực thi pipeline và xử lý lỗi (fault tolerance). Mặc dù tiêu đề đề cập "liên quan đến AWS" nhưng nội dung rõ ràng là Azure (không phải AWS).
- Bối cảnh: Có một instance ADF chứa hai pipeline: Pipeline1 và Pipeline2.
- Pipeline1 (hình ảnh exhibit 1): Bao gồm hai activity nối tiếp Stored procedure1 (trạng thái thất bại - biểu tượng đỏ với icon lỗi ⚡, mũi tên kết nối đỏ chỉ path thất bại được kích hoạt) → Set variable1 (trạng thái skipped - ký hiệu (x) màu xám).
- Pipeline2 (hình ảnh exhibit 2): Bao gồm hai activity nối tiếp Execute Pipeline1 (gọi Pipeline1, trạng thái thành công - biểu tượng xanh ✅, mũi tên xanh chỉ path thành công) → Set variable1 (trạng thái skipped - (x) màu xám).
- Sự kiện: Thực thi Pipeline2, và Stored procedure1 (activity trong Pipeline1) thất bại.
- Yêu cầu xác định: Trạng thái của các pipeline runs (run của Pipeline1 - child pipeline được trigger, và run của Pipeline2 - parent pipeline).
- Đặc điểm quan trọng từ hình ảnh (run history view trong ADF):
- Mũi tên đỏ trong Pipeline1: Chỉ path "upon failure" (xử lý lỗi) được kích hoạt.
- Activity skipped ((x)): Dependency không thỏa mãn (thường do predecessor thất bại hoặc condition expression false).
- Execute Pipeline1 thành công dù child có lỗi nội bộ: Do cơ chế WaitOnCompletion và fault tolerance.
- ✅ Kiến thức cập nhật 2026: ADF hỗ trợ fault tolerance trong container activities như ForEach/Until (phiên bản mới nhất giữ nguyên, thêm hỗ trợ dynamic fault handling via expressions). Không thay đổi core behavior từ 2023-2026.
📘 Nguồn tham khảo:
- Azure Data Factory pipeline failure handling (fault tolerance in ForEach).
- Execute Pipeline activity (WaitOnCompletion property).
- Monitor pipeline runs (activity statuses: green ✅ succeeded, red ❌ failed, (x) skipped).
✅ Đáp án đúng: Pipeline1 and Pipeline2 succeeded.
Lý do lựa chọn:
- Dựa vào hình ảnh run history, Execute Pipeline1 trong Pipeline2 có trạng thái ✅ succeeded (xanh), chứng tỏ child Pipeline1 run hoàn thành với status Succeeded (nếu WaitOnCompletion=true - default).
- Mặc dù Stored procedure1 thất bại (red), Pipeline1 vẫn succeeded nhờ fault tolerance trong container (rất có thể ForEach activity chứa Stored procedure1 → Set variable1, với tùy chọn "fault tolerance: Skip erroneous items" enabled). Lỗi iteration bị skip, không làm fail toàn bộ container/pipeline.
- Pipeline2 succeeded vì tất cả activities succeeded hoặc skipped (Execute Pipeline1 ✅, Set variable1 (x) do dependency/condition không thỏa mãn - ví dụ
@activity('Execute Pipeline1').output.status != 'Failed'). - Kết quả: Cả hai pipeline runs đều Succeeded (không có activity failed không được tolerate).
❌ Giải thích tất cả các phương án
- Pipeline1 and Pipeline2 succeeded. ✅ Đúng (như trên). Fault tolerance cho phép Pipeline1 succeed dù Stored procedure1 failed (lỗi được skip ở level container), Execute Pipeline1 ✅ → Pipeline2 succeed. Hình ảnh xác nhận: green trên Execute Pipeline1, skipped hợp lý.
- Pipeline1 and Pipeline2 failed. ❌ Sai. Nếu không có fault tolerance, Pipeline1 failed → Execute Pipeline1 failed (nếu WaitOnCompletion=true) → Pipeline2 failed. Nhưng hình ảnh cho thấy Execute Pipeline1 ✅ và Set variable1 (x) không failed → không phải.
- Pipeline1 succeeded and Pipeline2 failed. ❌ Sai. Pipeline2 không thể failed vì Execute Pipeline1 ✅ và Set variable1 (x) - không có failed activity nào → Pipeline2 succeeded. Hình ảnh mũi tên xanh xác nhận path success.
- Pipeline1 failed and Pipeline2 succeeded. ❌ Sai. Nếu WaitOnCompletion=false, Pipeline2 có thể succeed bất kể child, nhưng hình ảnh Execute Pipeline1 ✅ ngụ ý child không failed (vì fault tolerance làm Pipeline1 succeeded). Nếu không tolerate, Execute Pipeline1 sẽ red nếu Wait=true.
🛠️ Kết luận: Đây là ví dụ điển hình về fault handling trong ADF (sử dụng container fault tolerance + dependency paths). Để tái tạo, enable fault tolerance trong ForEach và kiểm tra run history. Nếu config WaitOnCompletion=false, Pipeline2 vẫn succeed nhưng child status độc lập.