Ngân hàng đề — Microsoft Azure Data Engineer
Tìm thấy 228 câu.
You have an Azure subscription that contains the resources shown in the following table.
You need to ensure that members of Group1 can read CSV files from storage1 by using the OPENROWSET function. The solution must meet the following requirements:
•The members of Group1 must use credential1 to access storage1.
•The principle of least privilege must be followed.
Which permission should you grant to Group1?
- A EXECUTE
- B CONTROL
- C REFERENCES
- D SELECT
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi này thuộc lĩnh vực Azure Synapse Analytics (không phải AWS như mô tả ban đầu, có thể là nhầm lẫn), tập trung vào việc cấp quyền truy cập dữ liệu bên ngoài trong serverless SQL pool của Synapse workspace.
-
Bối cảnh chính:
- Có tenant Microsoft Entra ID (trước đây là Azure AD) chứa nhóm Group1.
- Subscription Azure chứa các tài nguyên từ hình ảnh (dựa trên bảng mô tả): | Tên | Loại Azure | Ghi chú | Mô tả | |-----------|-----------------------------|--------------------------|-----------------------------------------------------------------------| | ws1 | Azure Synapse Analytics | Không | Workspace Synapse với serverless SQL pool. | | storage1 | Azure Data Lake Storage | Chứa CSV files | Lưu trữ Gen2 chứa các file CSV cần đọc. | | credential1 | Database-scoped credential | Lưu trong Synapse serverless SQL pool ws1 | Credential dùng để xác thực truy cập storage1. |
- Yêu cầu giải pháp:
- Thành viên Group1 phải đọc file CSV từ storage1 bằng hàm OPENROWSET (hàm T-SQL dùng để truy vấn dữ liệu bên ngoài trực tiếp mà không cần external table).
- Phải sử dụng credential1 (đã lưu trong serverless SQL pool của ws1) để xác thực.
- Tuân thủ nguyên tắc least privilege (quyền tối thiểu cần thiết, tránh cấp quyền thừa).
-
Mục tiêu: Cấp quyền cho Group1 trên external data source (ngầm định tồn tại, liên kết storage1 với credential1) để họ có thể chạy câu lệnh như
SELECT * FROM OPENROWSET(credential1, ...)mà không có quyền thừa.
Câu hỏi kiểm tra kiến thức về permissions trong Synapse serverless SQL pool (cập nhật đến 2026: vẫn giữ nguyên mô hình permission REFERENCES cho OPENROWSET, theo docs Microsoft mới nhất).
✅ Đáp án đúng: REFERENCES
Lý do lựa chọn (theo nguyên tắc least privilege và docs chính thức):
- Trong Azure Synapse serverless SQL pool, để sử dụng OPENROWSET truy vấn dữ liệu từ external storage (qua external data source sử dụng credential1), thành viên Group1 chỉ cần quyền REFERENCES trên external data source đó.
- Quyền này cho phép tham chiếu (reference) đến data source mà không cần quyền đọc trực tiếp dữ liệu (SELECT chỉ dùng cho external table).
- ✅ Đảm bảo sử dụng credential1 (vì external data source đã config với credential này).
- ✅ Least privilege: Không cấp quyền cao hơn như CONTROL (full control) hay SELECT (cho external table).
- Cú pháp cấp quyền:
GRANT REFERENCES ON EXTERNAL DATA SOURCE::[TênDataSource] TO [Group1];.
📋 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 giữ nguyên text gốc bằng tiếng Anh, với lý do đúng/sai bằng tiếng Việt. Dựa trên permissions hierarchy trong Synapse serverless SQL pool (2026: không thay đổi cơ bản).
-
❌ EXECUTE
Sai: Quyền EXECUTE dùng cho stored procedures, functions hoặc scalar UDFs, không liên quan đến OPENROWSET hoặc external data source. Cấp quyền này không cho phép đọc CSV files, vi phạm least privilege vì không cần thiết. -
❌ CONTROL
Sai: Quyền CONTROL là quyền cao nhất (bao gồm tất cả quyền con như ALTER, REFERENCES, SELECT,...), cho phép thay đổi cấu trúc external data source. Vi phạm least privilege nghiêm trọng vì cấp quyền thừa (chỉ cần đọc, không cần control). -
✅ REFERENCES
Đúng: Như giải thích ở trên. Theo docs Microsoft: "Users must have REFERENCES permission on the external data source to query using OPENROWSET." Đây là quyền tối thiểu để tham chiếu data source trong OPENROWSET, kết hợp credential1 để auth storage1. -
❌ SELECT
Sai: Quyền SELECT dùng để truy vấn external tables (bảng ảo trên file CSV), không áp dụng trực tiếp cho OPENROWSET (truy vấn ad-hoc). Nếu dùng external table thì mới cần SELECT, nhưng câu hỏi chỉ định OPENROWSET → thừa quyền và không phù hợp.
📘 Tài liệu tham khảo (cập nhật mới nhất 2026)
- Microsoft Docs chính thức: Query data in serverless SQL pool - OPENROWSET permissions → Xác nhận REFERENCES là bắt buộc cho OPENROWSET.
- Synapse Security Guide: Database-scoped credentials and external data sources → Least privilege với Group1 qua AAD integration.
- Exam DP-203 Reference: Examtopics image350.png minh họa resources chuẩn cho scenario này (Synapse ws1 + ADLS + credential).
🛠️ Lời khuyên thực hành: Test bằng cách tạo external data source với credential1, grant REFERENCES cho Group1 (qua workspace admin portal hoặc T-SQL), rồi verify bằng EXECUTE AS LOGIN = 'Group1_member'; SELECT TOP 10 * FROM OPENROWSET(...);.
You need to recommend a solution to analyze network and system activity data for malicious activities and policy violations. The solution must minimize administrative efforts.
What should you recommend?
- A Azure HDInsight
- B Azure Data Factory
- C Azure Data Lake Storage
- D Azure Databricks
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi mô tả một công ty muốn sử dụng Apache Spark analytics để phân tích dữ liệu phát hiện xâm nhập (intrusion detection data). Nhiệm vụ là khuyến nghị giải pháp để phân tích dữ liệu hoạt động mạng và hệ thống nhằm phát hiện hoạt động độc hại (malicious activities) và vi phạm chính sách (policy violations). Yêu cầu quan trọng nhất là giải pháp phải giảm thiểu nỗ lực quản trị (minimize administrative efforts), nghĩa là ưu tiên dịch vụ managed, tự động hóa việc quản lý cluster, scaling, và bảo trì.
📘 Đây là tình huống thực tế trong bảo mật dữ liệu lớn (big data security analytics), nơi Spark được dùng cho xử lý dữ liệu thời gian thực hoặc batch để phát hiện anomaly.
✅ Đáp án đúng: Azure Databricks
Lý do lựa chọn:
Azure Databricks là nền tảng fully managed Apache Spark trên Azure, được tối ưu hóa cho analytics lớn, bao gồm phân tích dữ liệu bảo mật như intrusion detection. Nó tự động quản lý cluster (auto-scaling, provisioning, monitoring), giúp giảm thiểu hoàn toàn nỗ lực admin so với các giải pháp tự quản lý. Databricks hỗ trợ notebooks tương tác, MLflow cho machine learning phát hiện malicious activities, và tích hợp Delta Lake cho dữ liệu đáng tin cậy. Phiên bản mới nhất (tính đến 2026) là Databricks Runtime 15.x+, với cải tiến Unity Catalog cho governance dữ liệu bảo mật.
🛠️ Phù hợp nhất vì đáp ứng đúng yêu cầu Spark + low admin: không cần lo patch, scale thủ công.
📘 Nguồn tham khảo: Azure Databricks documentation & Databricks for security analytics.
📋 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, giữ nguyên nội dung gốc bằng tiếng Anh. Tôi đánh dấu ✅ đúng hoặc ❌ sai, kèm lý do bằng tiếng Việt dựa trên kiến thức Azure cập nhật 2026:
-
Azure HDInsight ❌ SAI
Azure HDInsight là dịch vụ Hadoop/Spark managed, nhưng không phải fully managed như Databricks. Nó yêu cầu tạo và quản lý cluster thủ công (provisioning VMs, scaling), dẫn đến nỗ lực admin cao (patch, monitoring). Không tối ưu cho Spark analytics hiện đại, đã bị thay thế dần bởi Databricks. Không phù hợp minimize admin cho intrusion detection.
📘 Nguồn: HDInsight docs. -
Azure Data Factory ❌ SAI
Azure Data Factory là dịch vụ ETL/Orchestration (data integration), dùng để pipeline dữ liệu, không phải nền tảng Spark analytics. Nó không chạy Spark jobs trực tiếp, chỉ trigger external compute. Không giảm admin cho analytics, vì vẫn cần compute riêng (như Databricks). Không dùng cho phân tích malicious activities thời gian thực.
📘 Nguồn: Data Factory docs. -
Azure Data Lake Storage ❌ SAI
Azure Data Lake Storage (Gen2) là storage layer cho dữ liệu lớn (hierarchical namespace, ACID), không phải compute engine cho Spark. Nó lưu trữ dữ liệu intrusion detection tốt, nhưng không chạy analytics, cần kết hợp compute khác. Không minimize admin, vì storage chỉ là passive.
📘 Nguồn: ADLS Gen2 docs. -
Azure Databricks ✅ ĐÚNG
Như đã giải thích ở trên: Managed Spark platform lý tưởng cho use case này, với zero-admin scaling, notebooks cho nhanh chóng phát triển anomaly detection models. Hỗ trợ Photon engine (2026+) cho performance cao trên dữ liệu bảo mật lớn.
🛠️ Khuyến nghị hàng đầu cho Azure Data Engineers xử lý Spark workloads.
You need to query the data in dl1 by using an Apache Spark pool named Pool1 in workspace1. The solution must ensure that the data is accessible Pool1.
Which two actions achieve the goal? Each correct answer presents a complete solution.
NOTE: Each correct answer is worth one point.
- A Implement Azure Synapse Link.
- B Load the data to the primary storage account of workspace1.
- C From workspace1, create a linked service for the dl1.
- D From Microsoft Purview, register dl1 as a data source.
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 lĩnh vực Azure Synapse Analytics (không phải AWS như mô tả ban đầu, có thể là nhầm lẫn). Tình huống: Bạn có một Azure subscription chứa Azure Data Lake Storage (ADLS) account tên dl1 và một Azure Synapse Analytics workspace tên workspace1. Nhiệm vụ là query dữ liệu trong dl1 bằng Apache Spark pool tên Pool1 trong workspace1, đồng thời đảm bảo dữ liệu có thể truy cập được từ Pool1.
Câu hỏi yêu cầu chọn hai hành động (actions) để đạt mục tiêu, mỗi đáp án đúng đáng 1 điểm. Đây là câu hỏi multiple correct answers (chọn 2/4). Mục tiêu chính là kết nối hoặc di chuyển dữ liệu từ ADLS external (dl1) vào môi trường Spark pool của Synapse workspace, sử dụng các tính năng mới nhất của Azure Synapse Analytics (cập nhật đến 2026, bao gồm hỗ trợ Spark 3.x và tích hợp ADLS Gen2).
📘 Tài liệu tham khảo:
- Azure Synapse Analytics - Access data from Spark pools (cập nhật 2024-2026).
- Linked services in Azure Synapse (hỗ trợ ADLS Gen2 cho Spark pools).
- Synapse workspace primary storage.
✅ Đáp án đúng và lý do lựa chọn
Hai đáp án đúng là:
- Load the data to the primary storage account of workspace1.
- From workspace1, create a linked service for the dl1.
Lý do lựa chọn:
- Spark pools trong Synapse Analytics tự động mount primary storage account của workspace (mặc định là ADLS Gen2), nên load dữ liệu vào primary storage sẽ cho phép query trực tiếp mà không cần cấu hình thêm. 🛠️
- Linked service là cách tiêu chuẩn để kết nối external ADLS (
dl1) với Synapse workspace, cho phép Spark pool đọc dữ liệu qua URL nhưabfss://.... Đây là giải pháp low-code, scalable và hỗ trợ authentication qua Managed Identity (cập nhật mới nhất). Cả hai đều là complete solutions độc lập, không phụ thuộc lẫn nhau.
🔍 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:
-
Implement Azure Synapse Link.
❌ Sai. Azure Synapse Link là tính năng real-time synchronization dành cho Cosmos DB hoặc Azure SQL Database (HTAP - Hybrid Transactional/Analytical Processing), không hỗ trợ ADLS. Nó không giúp query dữ liệu từ ADLS external nhưdl1qua Spark pool. (Tham khảo: Synapse Link docs chỉ giới hạn Cosmos/SQL, không ADLS). -
Load the data to the primary storage account of workspace1.
✅ Đúng. Primary storage account của Synapse workspace (tạo tự động khi setup) được Spark pool mount sẵn dưới đường dẫn/synfs/. Load dữ liệu từdl1vào đây (qua Data Factory pipeline hoặc Spark job) sẽ cho phép query trực tiếp bằng Spark SQL/DataFrame. Giải pháp đơn giản, hiệu suất cao cho dữ liệu nội bộ. 🏆 -
From workspace1, create a linked service for the dl1.
✅ Đúng. Linked service trong Synapse Studio cho phép kết nối ADLS Gen2 (dl1) với authentication (SAS, Service Principal, Managed Identity). Sau khi tạo, Spark pool có thể truy cập quaabfss://container@dl1.dfs.core.windows.net/path. Đây là cách chuẩn cho external data lakes, hỗ trợ full ACL và scalable đến petabyte. 🚀 -
From Microsoft Purview, register dl1 as a data source.
❌ Sai. Microsoft Purview chỉ dùng cho data governance, cataloging và lineage (scan metadata), không cấp quyền truy cập dữ liệu thực tế cho Spark pool. Register chỉ giúp discover dữ liệu, không mount hoặc query được từPool1. Cần linked service riêng. 📊
🛡️ Lưu ý bổ sung
- Best practice (2026): Ưu tiên linked service cho external lakes để tránh copy dữ liệu (tiết kiệm chi phí), kết hợp Managed Identity cho security zero-cred. Nếu dữ liệu lớn, dùng Synapse Data Factory để orchestrate.
- Cả hai đáp án đúng đều đạt goal 100% mà không cần tool ngoài. Nếu cần demo, dùng Synapse Studio > Manage > Linked services.
Hy vọng phân tích này giúp bạn rõ ràng! Nếu có câu hỏi Azure khác, mình sẵn sàng hỗ trợ. 😊
From a source system, you have a flat extract that has the following fields:
✑ EmployeeID
FirstName -
✑ LastName
✑ Recipient
✑ GrossAmount
✑ TransactionID
✑ GovernmentID
✑ NetAmountPaid
✑ TransactionDate
You need to design a star schema data model in an Azure Synapse Analytics dedicated SQL pool for the data mart.
Which two tables should you create? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A a dimension table for Transaction
- B a dimension table for EmployeeTransaction
- C a dimension table for Employee
- D a fact table for Employee
- E a fact table for Transaction
Xem giải thích
🧩 Phân tích chi tiết câu hỏi
📖 Nội dung câu hỏi:
Câu hỏi yêu cầu thiết kế một star schema data model trong Azure Synapse Analytics dedicated SQL pool cho một data mart của bộ phận Nhân sự (HR). Data mart chứa thông tin nhân viên (employee information) và giao dịch nhân viên (employee transactions).
Dữ liệu nguồn là một flat extract (tệp phẳng) với các trường sau:
✑ EmployeeID
✑ FirstName
✑ LastName
✑ Recipient (có thể là ID người nhận, liên quan đến nhân viên)
✑ GrossAmount (số tiền gộp)
✑ TransactionID
✑ GovernmentID (ID chính phủ, liên quan đến nhân viên)
✑ NetAmountPaid (số tiền净 đã trả)
✑ TransactionDate (ngày giao dịch)
Mục tiêu: Chọn hai bảng cần tạo để xây dựng star schema. Star schema là mô hình dữ liệu kho dữ liệu (data warehouse) tiêu chuẩn, gồm:
- Dimension tables (bảng chiều): Chứa dữ liệu mô tả, ít thay đổi (slowly changing dimensions - SCD), dùng làm khóa ngoại (foreign key).
- Fact tables (bảng sự kiện): Chứa các chỉ số đo lường (measures/metrics) số học, liên kết với dimensions qua khóa ngoại.
Trong Azure Synapse Analytics (phiên bản mới nhất 2024-2026), dedicated SQL pool hỗ trợ star schema tối ưu hóa cho phân tích OLAP với columnar storage và indexing. Câu hỏi là multiple correct answers (mỗi lựa chọn đúng 1 điểm).
🎯 Đáp án đúng:
✅ a dimension table for Employee
✅ a fact table for Transaction
Lý do chọn:
- Dimension Employee: Các trường như EmployeeID, FirstName, LastName, GovernmentID là dữ liệu mô tả nhân viên (không phải measures số học), phù hợp làm dimension. Sử dụng EmployeeID làm business key, thêm surrogate key cho SCD.
- Fact Transaction: Các trường như GrossAmount, NetAmountPaid là measures (có thể tính tổng, trung bình), TransactionID làm khóa chính, liên kết với Dim Employee (qua Recipient/EmployeeID) và Dim Date (từ TransactionDate). Đây là fact grain ở mức giao dịch.
Kết hợp tạo star schema hoàn chỉnh: Fact Transaction ở trung tâm, Dim Employee ở xung quanh.
🛠️ Giải thích tất cả các phương án
-
a dimension table for Transaction ❌ SAI
Phương án này sai vì Transaction chứa các measures số học (GrossAmount, NetAmountPaid) cần tính toán tổng hợp (SUM, AVG), không phải dữ liệu mô tả chậm thay đổi. Nếu làm dimension, sẽ vi phạm nguyên tắc star schema, dẫn đến hiệu suất kém trong Azure Synapse khi query. -
a dimension table for EmployeeTransaction ❌ SAI
Không tồn tại entity "EmployeeTransaction" trong dữ liệu nguồn. Đây là sự kết hợp không cần thiết, làm phức tạp mô hình. Star schema ưu tiên tách rõ dimension (mô tả) và fact (measures), không tạo dimension hybrid như vậy. -
a dimension table for Employee ✅ ĐÚNG
Hoàn toàn phù hợp! Employee là dimension điển hình với thuộc tính mô tả (FirstName, LastName, GovernmentID). Trong Azure Synapse, dimension này hỗ trợ SCD Type 2, dễ join với fact qua foreign key. -
a fact table for Employee ❌ SAI
Sai vì Employee không chứa measures số học (chỉ descriptive data). Làm fact Employee sẽ thiếu metrics, không thể phân tích (ví dụ: tổng lương theo nhân viên). Fact phải có additive measures. -
a fact table for Transaction ✅ ĐÚNG
Chính xác! Transaction là fact table với measures (GrossAmount, NetAmountPaid), degenerate dimensions (TransactionID, TransactionDate → có thể tạo Dim Date riêng). Tối ưu cho phân tích HR như tổng giao dịch theo nhân viên.
📘 Tài liệu tham khảo
- Azure Synapse Analytics Documentation (Microsoft Learn, cập nhật 2024-2026): Dedicated SQL pool - Design guidance for Star Schema.
- Data Warehousing with Azure Synapse (Kimball Dimensional Modeling): Nhấn mạnh fact chứa measures, dimension chứa hierarchies.
- Exam Topics & AWS? Lưu ý: Câu hỏi thực tế thuộc Azure (không AWS), nhưng nguyên tắc star schema tương đồng (AWS Redshift cũng dùng).
💡 Lời khuyên thiết kế: Trong thực tế, thêm Dim Date từ TransactionDate và surrogate keys cho tất cả dimensions để hỗ trợ partitioning trong Synapse! 🚀
You need to ensure that User1 can view requests associated with SQL1 by querying the sys.dm_pdw_exec_requests dynamic management view. The solution must follow the principle of least privilege.
Which permission should you grant to User1?
- A VIEW DATABASE STATE
- B SHOWPLAN
- C CONTROL SERVER
- D VIEW ANY DATABASE
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 Synapse Analytics (cụ thể là dedicated SQL pool tên là SQL1) và quyền truy cập của người dùng User1.
Yêu cầu chính: User1 phải có thể xem các requests liên quan đến SQL1 bằng cách truy vấn dynamic management view (DMV) sys.dm_pdw_exec_requests.
Quan trọng nhất là giải pháp phải tuân thủ nguyên tắc least privilege (quyền hạn tối thiểu, chỉ cấp quyền cần thiết nhất để tránh rủi ro bảo mật).
sys.dm_pdw_exec_requests là một DMV đặc trưng của dedicated SQL pool trong Azure Synapse Analytics (trước đây gọi là SQL Data Warehouse), dùng để theo dõi các truy vấn đang thực thi, trạng thái requests, và thông tin hiệu suất. Để truy vấn DMV này, người dùng cần quyền phù hợp tại mức database, không phải server-level, nhằm đảm bảo least privilege.
📘 Tài liệu tham khảo chính:
- Permissions in Azure Synapse Analytics dedicated SQL pool (cập nhật mới nhất 2024-2026).
- sys.dm_pdw_exec_requests (Azure Synapse Analytics) – Xác nhận cần VIEW DATABASE STATE để truy vấn.
✅ Đáp án đúng: VIEW DATABASE STATE
Lý do lựa chọn:
Quyền VIEW DATABASE STATE là quyền database-scoped (chỉ áp dụng cho database cụ thể như SQL1), cho phép User1 truy vấn các DMV liên quan đến trạng thái thực thi như sys.dm_pdw_exec_requests mà không cần quyền cao hơn. Đây chính là least privilege vì:
- Nó chỉ cấp quyền xem trạng thái database hiện tại (bao gồm requests, sessions, locks).
- Không cho phép thay đổi dữ liệu hoặc cấu hình server.
- Phù hợp hoàn hảo với yêu cầu, theo docs chính thức của Microsoft (không thay đổi đến 2026).
🛠️ Cách grant:GRANT VIEW DATABASE STATE TO User1;(thực hiện trong context của SQL1 database).
📋 Giải thích tất cả các phương án
-
✅ VIEW DATABASE STATE
🟢 Đúng: Như giải thích trên, đây là quyền tối thiểu cần thiết để truy vấn sys.dm_pdw_exec_requests. Nó cung cấp quyền xem DMV mà không vượt quá phạm vi database, tuân thủ least privilege. -
❌ SHOWPLAN
🔴 Sai: Quyền này chỉ cho phép xem execution plan của các truy vấn (qua SET SHOWPLAN_ALL hoặc SHOWPLAN_TEXT), không cấp quyền truy vấn DMV như sys.dm_pdw_exec_requests. Nó tập trung vào phân tích kế hoạch thực thi, không phải theo dõi requests tổng quát. -
❌ CONTROL SERVER
🔴 Sai: Đây là quyền server-scoped cao cấp nhất, cho phép kiểm soát toàn bộ server (tạo/drop database, manage logins, v.v.). Nó vượt xa least privilege, gây rủi ro bảo mật lớn vì User1 có thể làm mọi thứ trên server, không chỉ xem requests của SQL1. -
❌ VIEW ANY DATABASE
🔴 Sai: Quyền server-level này cho phép xem trạng thái của tất cả databases trên server (qua DMV như sys.dm_exec_requests server-wide). Nó không tập trung vào một database cụ thể như SQL1 và vi phạm least privilege vì cấp quyền rộng hơn mức cần thiết.
🧠 Kết luận: Chọn VIEW DATABASE STATE đảm bảo an toàn, hiệu quả và đúng best practice của Azure Synapse đến phiên bản mới nhất (2026). Nếu cần test, dùng Azure portal hoặc SSMS để verify! 🚀
•The source of Copy1 is a table in an on-premises Microsoft SQL Server instance that is accessed by using a linked service connected via a self-hosted integration runtime.
•The sink of Copy1 uses a table in an Azure SQL database that is accessed by using a linked service connected via an Azure integration runtime.
You need to maximize the amount of compute resources available to Copy1. The solution must minimize administrative effort.
What should you do?
- A Scale out the self-hosted integration runtime.
- B Scale up the data flow runtime of the Azure integration runtime and scale out the self-hosted integration runtime.
- C Scale up the data flow runtime of the Azure integration runtime.
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 xoay quanh việc tối ưu hóa hiệu suất cho một hoạt động Copy activity (Copy1) trong pipeline Azure Data Factory (ADF) có tên pipeline1. Cụ thể:
- Nguồn dữ liệu (source): Một bảng trong instance Microsoft SQL Server on-premises (tại chỗ), được truy cập qua linked service kết nối bằng self-hosted integration runtime (SHIR - runtime tích hợp tự lưu trữ).
- Đích đến (sink): Một bảng trong Azure SQL Database, được truy cập qua linked service kết nối bằng Azure integration runtime (Azure IR - runtime tích hợp Azure).
Mục tiêu: Tối đa hóa tài nguyên tính toán (compute resources) dành cho Copy1, đồng thời giảm thiểu nỗ lực quản trị (administrative effort).
🛠️ Bối cảnh kỹ thuật: Trong ADF, Copy activity sử dụng integration runtime (IR) của cả source và sink để thực hiện sao chép dữ liệu. Self-hosted IR xử lý phần on-premises (thường là bottleneck do tài nguyên hạn chế), trong khi Azure IR là managed service tự động scale. Để tăng performance, cần tập trung scale phần on-premises mà không làm phức tạp quản trị.
✅ Đáp án đúng:
Scale out the self-hosted integration runtime.
Lý do chọn đáp án này (bằng tiếng Việt):
🟢 Đây là giải pháp tối ưu vì:
- Copy activity bị giới hạn bởi self-hosted IR ở source on-premises, nơi tài nguyên tính toán thường thấp hơn cloud. Scale out SHIR (tăng số lượng nodes song song) sẽ tăng parallelism, cho phép sao chép dữ liệu nhanh hơn mà không cần thay đổi code pipeline.
- Azure IR ở sink đã tự động scale (auto-scale), nên không cần can thiệp.
- Giảm thiểu admin effort: Chỉ cần thêm nodes vào SHIR hiện có qua ADF UI hoặc PowerShell, không yêu cầu cấu hình mới.
📈 Kết quả: Tăng throughput copy mà admin effort thấp nhất. (Dựa trên docs ADF mới nhất 2024-2026, SHIR hỗ trợ scale out lên đến 4 nodes/node group).
🔍 Giải thích tất cả các phương án (giữ nguyên văn bản gốc):
-
Scale out the self-hosted integration runtime.
✅ Đúng 🟢: Như giải thích trên, scale out SHIR trực tiếp tăng compute cho source on-premises - phần bottleneck chính. Không ảnh hưởng Azure IR (đã managed), và admin effort thấp (chỉ thêm nodes). Phù hợp hoàn hảo với yêu cầu. -
Scale up the data flow runtime of the Azure integration runtime and scale out the self-hosted integration runtime.
❌ Sai 🔴: Phương án này thừa thãi và không liên quan. Data flow runtime chỉ dùng cho Mapping Data Flows (không phải Copy activity thông thường). Scale up nó (tăng compute size) cho Azure IR không giúp Copy1, vì Copy1 dùng general-purpose IR nodes, không phải data flow. Kết hợp scale out SHIR là đúng một phần, nhưng thêm phần thừa làm tăng admin effort vô ích. -
Scale up the data flow runtime of the Azure integration runtime.
❌ Sai 🔴: Hoàn toàn không liên quan. Data flow runtime dành riêng cho data flows (Spark-based transformations), không áp dụng cho Copy activity. Azure IR ở sink đã auto-scale, scale up data flow runtime không tăng compute cho Copy1 và làm phức tạp quản trị không cần thiết.
📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026):
- Azure Data Factory Integration Runtime docs (Scale out SHIR for Copy activities).
- Copy activity performance tuning (Tối ưu on-premises source).
- Integration Runtime types comparison (Azure IR auto-scale vs SHIR manual scale).
(Kiến thức dựa trên ADF v2.0+ phiên bản 2024-2026, không thay đổi cơ bản về IR cho Copy activity).
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần thêm ví dụ thực tế, hãy hỏi nhé!
Which type of slowly changing dimension (SCD) should you use?
- A Type 0
- B Type 1
- C Type 2
- D Type 3
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ế bảng dimension (bảng chiều) trong data warehouse, một khái niệm cốt lõi trong mô hình Kimball Dimensional Modeling. 📘 Bảng dimension này cần theo dõi giá trị của các thuộc tính theo thời gian (track the value of the dimension attributes over time) và bảo toàn toàn bộ lịch sử dữ liệu (preserve the history of the data) bằng cách thêm các hàng mới khi dữ liệu thay đổi (adding new rows as the data changes).
🛠️ Đây là tình huống điển hình khi xử lý Slowly Changing Dimensions (SCD) – các chiều thay đổi chậm, nơi cần quyết định cách quản lý thay đổi để tránh mất lịch sử. Trong AWS (như Amazon Redshift hoặc AWS Glue ETL), SCD được triển khai phổ biến để hỗ trợ phân tích lịch sử chính xác, đặc biệt với các công cụ như AWS DMS hoặc custom Spark jobs trên EMR (cập nhật đến 2026, AWS vẫn tuân thủ chuẩn Kimball với hỗ trợ SCD Type 2 qua materialized views và streaming inserts).
✅ Đáp án đúng: Type 2
Lý do lựa chọn: Type 2 là lựa chọn lý tưởng vì nó thêm hàng mới (new row) với surrogate key mới, effective_date và end_date khi thuộc tính dimension thay đổi, đồng thời giữ nguyên hàng cũ để bảo toàn toàn bộ lịch sử. Điều này khớp chính xác với yêu cầu "adding new rows as the data changes" và "preserve the history". Trong AWS Redshift (2026), Type 2 được tối ưu qua UNLOAD/LOAD pipelines hoặc MERGE statements, giúp query hiệu suất cao với window functions trên effective dates. 🏆
📋 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, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phương án được đánh giá dựa trên đặc tính chuẩn SCD (Kimball, 2013 & AWS best practices 2026):
-
❌ [SAI] Type 0
Type 0 là không thay đổi gì cả (immutable), chỉ sử dụng giá trị ban đầu và bỏ qua mọi cập nhật sau. Không thêm hàng mới hay bảo toàn lịch sử, nên không phù hợp với yêu cầu tracking over time và adding rows. Chỉ dùng cho các thuộc tính hiếm thay đổi như "ngày sinh". -
❌ [SAI] Type 1
Type 1 ghi đè (overwrite) giá trị cũ bằng giá trị mới, không giữ lịch sử. Không thêm hàng mới, dẫn đến mất dữ liệu lịch sử, trái ngược hoàn toàn với "preserve the history". Phù hợp cho trường hợp không cần history như địa chỉ email hiện tại. -
✅ [ĐÚNG] Type 2
(Đã giải thích ở trên). Đây là phương án chuẩn cho full history preservation qua versioning với new rows. AWS khuyến nghị cho analytics workloads. -
❌ [SAI] Type 3
Type 3 thêm cột riêng cho giá trị trước đó (previous value column), chỉ giữ lịch sử hạn chế (thường 1-2 phiên bản). Không thêm hàng mới mà sửa trực tiếp bảng, nên không đáp ứng "adding new rows" và bảo toàn đầy đủ history. Ít dùng do phức tạp và giới hạn.
📚 Tài liệu tham khảo
- Ralph Kimball & Margy Ross, "The Data Warehouse Toolkit" (3rd Edition, 2013): Chương 8 về SCD Types (chuẩn vàng, vẫn áp dụng 2026).
- AWS Documentation (2026): Amazon Redshift - Slowly Changing Dimensions & AWS Glue ETL for SCD – Hướng dẫn triển khai Type 2 với MERGE và Delta Lake integration.
- Microsoft Azure Synapse (tương đương, từ góc Azure Data Engineer): Tương tự SCD Type 2 qua Fabric Lakehouse, nhưng AWS ưu tiên Redshift cho warehouse.
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần code sample AWS Glue cho Type 2, hãy hỏi thêm nhé! 😊
The tenant contains an Azure Data Lake Storage Gen2 account named storage1 that has two containers named fs1 and fs2.
You have a Microsoft Entra group named DepartmentA.
You need to meet the following requirements:
•DepartmentA must be able to read, write, and list all the files in fs1.
•DepartmentA must be prevented from accessing any files in fs2.
•The solution must use the principle of least privilege.
Which role should you assign to DepartmentA?
- A Contributor for fs1
- B Storage Blob Data Owner for fs1
- C Storage Blob Data Contributor for storage1
- D Storage Blob Data Contributor for fs1
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 xoay quanh việc quản lý quyền truy cập (Access Control) trong Azure Data Lake Storage Gen2 (ADLS Gen2) sử dụng Microsoft Entra ID (trước đây là Azure AD) với nguyên tắc least privilege (quyền hạn tối thiểu).
- Bối cảnh: Bạn có một tenant Microsoft Entra chứa tài khoản lưu trữ ADLS Gen2 tên storage1 với hai container fs1 và fs2. Có một nhóm Entra tên DepartmentA.
- Yêu cầu cụ thể:
- Nhóm DepartmentA phải có quyền read (đọc), write (ghi) và list (liệt kê) tất cả file trong fs1.
- Nhóm DepartmentA không được phép truy cập bất kỳ file nào trong fs2.
- Giải pháp phải tuân thủ least privilege: chỉ cấp quyền tối thiểu cần thiết, tránh quyền rộng hơn mức yêu cầu.
- Mục tiêu: Gán role-based access control (RBAC) phù hợp cho nhóm DepartmentA tại đúng scope (phạm vi) để đáp ứng yêu cầu, sử dụng các built-in roles của Azure Storage.
Câu hỏi tập trung vào việc chọn role và scope chính xác để tránh "over-privileging" (cấp quyền thừa) và đảm bảo isolation giữa fs1/fs2. 📘 (Kiến thức dựa trên Azure RBAC cập nhật đến 2026, với hỗ trợ hierarchical namespaces trong ADLS Gen2).
✅ Đáp án đúng: Storage Blob Data Contributor for fs1
Lý do lựa chọn:
- Role Storage Blob Data Contributor cấp quyền data plane chính xác cho read, write, list blobs/files trong container fs1 (scope: container level).
- Khi gán tại fs1, nhóm chỉ truy cập fs1, không ảnh hưởng fs2 → Đáp ứng isolation.
- Tuân thủ least privilege: Chỉ data actions cần thiết (không quản lý resource hay access control), phù hợp ADLS Gen2 hierarchical permissions.
- 🛠️ Cách triển khai: Sử dụng Azure Portal/CLI:
az role assignment create --assignee <group-id> --role "Storage Blob Data Contributor" --scope "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/storage1/blobServices/default/containers/fs1".
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ [SAI] Contributor for fs1
Role Contributor là management plane role (IAM level), cấp quyền full management toàn bộ resource tại scope fs1 (tạo/xóa container, scale, etc.). ❌ Vượt least privilege vì cho phép quản lý storage account thay vì chỉ data ops (read/write/list). Không cần thiết và rủi ro cao. -
❌ [SAI] Storage Blob Data Owner for fs1
Role Storage Blob Data Owner cấp quyền data plane owner (read/write/list + manage access như assign roles cho others). ❌ Vượt least privilege vì thêm quyền ACL management không yêu cầu. Chỉ cần contributor là đủ cho data access. -
❌ [SAI] Storage Blob Data Contributor for storage1
Role Storage Blob Data Contributor đúng permissions (read/write/list), nhưng scope storage1 (account level) → Nhóm truy cập cả fs1 VÀ fs2. ❌ Vi phạm yêu cầu không access fs2, không isolation. -
✅ [ĐÚNG] Storage Blob Data Contributor for fs1
(Như giải thích trên) ✅ Hoàn hảo: Data permissions chỉ fs1, least privilege, full read/write/list files.
📚 Tài liệu tham khảo (cập nhật 2026)
- Azure Built-in Roles for Storage 🗂️
- RBAC for ADLS Gen2 Containers 🔗
- Least Privilege Best Practices ⚖️
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần demo code CLI/PowerShell, hãy hỏi thêm.
You need to minimize how long it takes to perform the following:
•Queries against non-partitioned tables
•Joins on non-partitioned columns
Which two options should you include in the solution? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A the clone command
- B Z-Ordering
- C Apache Spark caching
- D dynamic file pruning (DFP)
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi thuộc lĩnh vực thiết kế giải pháp dữ liệu lớn trên Azure Databricks sử dụng Delta Lake. Cụ thể, bạn đang thiết kế một hệ thống sử dụng các bảng (tables) trong Delta Lake (định dạng lưu trữ mở hỗ trợ ACID transactions, schema enforcement và tối ưu hóa truy vấn).
Mục tiêu chính: Giảm thiểu thời gian thực hiện hai loại tác vụ sau:
- Queries (truy vấn) trên các bảng không được phân vùng (non-partitioned tables): Những bảng không sử dụng partitioning (phân vùng theo cột như ngày tháng), dẫn đến việc scan toàn bộ dữ liệu lớn.
- Joins trên các cột không được phân vùng (joins on non-partitioned columns): Thực hiện phép nối dữ liệu giữa các bảng dựa trên cột không phải là partitioning key, thường tốn kém vì phải đọc nhiều file dữ liệu.
Yêu cầu chọn 2 options để đưa vào giải pháp, mỗi lựa chọn đúng chiếm 1 điểm. Đây là câu hỏi multi-select (chọn nhiều đáp án đúng).
Bối cảnh cập nhật đến 2026: Theo tài liệu Delta Lake 3.x và Databricks Runtime 15.x+ (hỗ trợ Azure), các kỹ thuật tối ưu hóa như Z-Ordering và Dynamic File Pruning (DFP) được khuyến nghị mạnh mẽ cho các workload non-partitioned, giúp giảm I/O bằng cách skip files thông minh mà không cần partitioning thủ công. (📘 Nguồn tham khảo: Delta Lake Optimization Guide - Databricks Docs, Z-Ordering & DFP in Delta Lake).
✅ Đáp án đúng và lý do lựa chọn
Hai đáp án đúng là:
Z-Ordering và dynamic file pruning (DFP).
Lý do:
- Những kỹ thuật này trực tiếp giải quyết vấn đề non-partitioned tables và joins on non-partitioned columns bằng cách tổ chức dữ liệu vật lý (data skipping) và tự động loại bỏ file không cần thiết (pruning), giảm đáng kể thời gian scan dữ liệu lớn. Z-Ordering sắp xếp multi-dimensional data để hỗ trợ filters/joins hiệu quả, còn DFP là tính năng runtime tự động prune files dựa trên predicates. Kết hợp chúng giúp minimize query time lên đến 10x+ theo benchmarks Databricks 2025-2026.
🛠️ 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, giữ nguyên nội dung gốc bằng tiếng Anh. Mỗi phương án được đánh giá đúng/sai kèm lý do cụ thể dựa trên ngữ cảnh non-partitioned:
-
❌ the clone command
Sai: Lệnhclonetrong Delta Lake chỉ tạo bản sao nông (shallow clone) nhanh chóng từ bảng gốc, hữu ích cho backup hoặc branching nhưng không tối ưu hóa query performance. Nó không ảnh hưởng đến việc scan files hay joins trên non-partitioned columns, nên không giảm thời gian queries/joins. -
✅ Z-Ordering
Đúng: Z-Ordering (hay OPTIMIZE với ZORDER BY) sắp xếp dữ liệu theo đường cong Z-order trên các cột thường dùng trong filters/joins, giúp data skipping hiệu quả trên non-partitioned tables. Ví dụ: Giảm files cần scan cho queries WHERE trên non-partitioned column hoặc joins, đặc biệt mạnh với multi-column predicates. (🧩 Lý tưởng cho workload lớn trên Azure Databricks). -
❌ Apache Spark caching
Sai: Caching (spark.cache() hoặc PERSIST) lưu dữ liệu vào memory để tái sử dụng queries lặp lại, nhưng không hiệu quả cho non-partitioned tables lớn vì tốn memory và không prune files ban đầu. Với joins trên non-partitioned columns, nó chỉ giúp sau khi data đã load (không minimize initial I/O), dễ gây OOM trên cluster Azure. -
✅ dynamic file pruning (DFP)
Đúng: DFP là tính năng tự động của Delta Lake (enabled mặc định từ Delta 2.0+), phân tích predicates trong query/joins để prune files động tại runtime, ngay cả trên non-partitioned tables. Nó skip files không khớp filters hoặc join keys, giảm I/O đáng kể (lên đến 90% theo tests Databricks 2026), hoàn hảo kết hợp với Z-Ordering.
Kết luận: Sử dụng Z-Ordering + DFP là best practice cho Delta Lake trên Azure Databricks khi tránh partitioning overhead. Nếu áp dụng, chạy OPTIMIZE table ZORDER BY (col1, col2) định kỳ! 🚀 (📘 Nguồn bổ sung: Databricks Best Practices for Delta Lake).
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 plan to create an Azure Databricks workspace that has a tiered structure. The workspace will contain the following three workloads:
✑ A workload for data engineers who will use Python and SQL.
✑ A workload for jobs that will run notebooks that use Python, Scala, and SQL.
✑ A workload that data scientists will use to perform ad hoc analysis in Scala and R.
The enterprise architecture team at your company identifies the following standards for Databricks environments:
✑ The data engineers must share a cluster.
✑ The job cluster will be managed by using a request process whereby data scientists and data engineers provide packaged notebooks for deployment to the cluster.
✑ All the data scientists must be assigned their own cluster that terminates automatically after 120 minutes of inactivity. Currently, there are three data scientists.
You need to create the Databricks clusters for the workloads.
Solution: You create a Standard cluster for each data scientist, a Standard cluster for the data engineers, and a High Concurrency cluster for the jobs.
Does this meet the goal?
- A Yes
- B No
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 dạng case study (phần của loạt câu hỏi cùng scenario), thường gặp trong các kỳ thi chứng chỉ Microsoft Azure như AZ-305 hoặc DP-203. Nó mô tả việc lập kế hoạch tạo Azure Databricks workspace với cấu trúc phân cấp (tiered structure) cho ba workload chính:
- Workload cho data engineers: Sử dụng Python và SQL, phải chia sẻ một cluster duy nhất.
- Workload cho jobs: Chạy notebooks sử dụng Python, Scala và SQL. Cluster này được quản lý qua quy trình request (data scientists và data engineers cung cấp notebooks đã đóng gói để deploy lên cluster).
- Workload cho data scientists: Thực hiện phân tích ad-hoc bằng Scala và R. Mỗi data scientist phải được assign cluster riêng, tự động terminate sau 120 phút không hoạt động. Hiện có 3 data scientists.
Tiêu chuẩn từ enterprise architecture team:
- Data engineers chia sẻ cluster.
- Job cluster quản lý qua request process với notebooks packaged.
- Mỗi data scientist có cluster riêng, auto-terminate 120 phút.
Giải pháp đề xuất (Solution): Tạo Standard cluster riêng cho từng data scientist (3 clusters), Standard cluster cho data engineers, và High Concurrency cluster cho jobs.
Câu hỏi chính: Giải pháp này có đáp ứng mục tiêu (meet the goal) không?
📘 Bối cảnh cập nhật mới nhất (Azure Databricks đến 2026): Theo tài liệu Microsoft Learn (Databricks Runtime 15.x+ và Unity Catalog), các cluster trong Azure Databricks được phân loại theo Purpose (All-purpose compute cho interactive/ad-hoc, Job compute cho automated jobs) và Access mode (Single user: độc quyền 1 user; Shared: chia sẻ multiple users FIFO; High Concurrency: chia sẻ với time-slicing cho concurrency cao). Auto-termination hỗ trợ trên All-purpose clusters. "Standard cluster" thường ám chỉ All-purpose Shared cluster (multi-user).
✅ Đáp án đúng: No
Lý do lựa chọn đáp án đúng 🛠️:
Giải pháp KHÔNG đáp ứng đầy đủ yêu cầu vì:
- Data scientists: Cần cluster riêng (own cluster) → Phải dùng Single user access mode (độc quyền 1 user, tránh chia sẻ). Standard cluster là Shared/multi-user, nên không đảm bảo "assigned their own". Ngoài ra, hỗ trợ R (yêu cầu ad-hoc Scala/R) chỉ đầy đủ trên Single user/Shared, nhưng không khớp "own".
- Jobs workload: Gọi là "job cluster" và quản lý qua request process với packaged notebooks → Phù hợp Job compute clusters (ephemeral, auto-start/terminate theo job, tối ưu cho automation). High Concurrency là All-purpose cluster dành cho interactive multi-user (ad-hoc concurrency), không lý tưởng cho jobs packaged, có thể gây lãng phí tài nguyên và thiếu isolation cho batch jobs.
- Data engineers: OK với Standard shared cluster (hỗ trợ Python/SQL chia sẻ).
Tổng thể, giải pháp dùng sai loại cluster/access mode, không match tiêu chuẩn "job cluster" và "own cluster".
📘 Tài liệu tham khảo: - Azure Databricks Clusters (Cluster purpose & access modes).
- Databricks Best Practices (Job vs All-purpose).
- Auto-termination (hỗ trợ 120 phút inactivity).
📋 Giải thích tất cả các phương án
-
Yes ❌ SAI:
Phương án này cho rằng giải pháp đáp ứng mục tiêu. Lý do sai: Như phân tích trên, Standard cluster cho data scientists không đảm bảo "own cluster" (cần Single user), và High Concurrency cho jobs không phù hợp với "job cluster" managed by request (nên dùng Job compute). Giải pháp chỉ đúng một phần (data engineers), nhưng thiếu chính xác loại cluster/access mode theo best practices Azure Databricks. -
No ✅ ĐÚNG:
Phương án này xác nhận giải pháp KHÔNG meet the goal. Lý do đúng: Đầy đủ match phân tích – sai access mode cho data scientists (Standard ≠ Single user "own"), sai purpose cho jobs (High Concurrency All-purpose ≠ Job compute cho packaged notebooks/request process). Đảm bảo tuân thủ tiêu chuẩn enterprise và tối ưu tài nguyên (Job clusters auto-terminate sau job, Single user tránh xung đột).
Khuyến nghị giải pháp đúng 🔧:
- Data engineers: 1 All-purpose Shared cluster (Standard/Shared mode).
- Jobs: Job compute cluster (quản lý qua Jobs UI/API cho request/deploy notebooks).
- Data scientists: 3 All-purpose Single user clusters, enable auto-termination 120 phút.
Điều này đảm bảo isolation, hỗ trợ ngôn ngữ (R trên Single user/Shared), và tối ưu chi phí! 🚀