Study guide · Core notes

Azure Data Fundamentals Notes: stores and workloads

Reference notes for DP-900: how data is shaped, which Azure service fits, and how analytics and Power BI close the loop.

Exam: DP-9004 domainsReviewed October 2026

How to read these notes: Items tagged Extra sit outside the July 21, 2026 skill list emphasis. Learn the unmarked items first. New to the exam? Start with the overview for the format and domain weights. Shared cloud vocabulary is on the Azure Fundamentals notes.

Domain 1: Ways to represent data

Start from the shape of the data, not the logo on the service card.

Data representation types named in the DP-900 study guide.
TypeFeaturesTypical examples
StructuredFixed schema; rows and columns; strong typingRelational tables, CSV with a consistent header
Semi-structuredFlexible schema; tags, keys, or nested fieldsJSON documents or XML records with optional nested fields
UnstructuredFree-form content not organized into predefined analytical fieldsPhotographs, video, audio, free-form document content

Options for data storage

Common file formats appear across lakes and pipelines: CSV for simple tabular exchange, JSON for nested documents, Parquet and ORC for columnar analytics, Avro for row-oriented streaming and schemas. A database adds querying, consistency rules, and concurrent access on top of storage.

Common data stores

File stores hold objects. Relational databases hold tables with relationships. Key-value, document, column-family, and graph stores hold non-relational models. A data warehouse or lakehouse optimizes for analytical scans.

Azure datastores by use case

Transactional apps often use Azure SQL or open-source PaaS databases. Documents and global distribution lean to Cosmos DB. Objects and lakes lean to Blob. File shares lean to Azure Files. Key-attribute entities can use Table storage or the Cosmos Table API.

Data shape is different from file encoding

A storage service does not determine whether the contents are structured. A Blob container can hold a consistently typed sales table in Parquet, nested product documents in JSON, and photographs. All three are objects from the storage service’s perspective, but their contents require different interpretation. Likewise, a binary format does not automatically mean unstructured data: Parquet and Avro encode records using schemas.

Imagine an export with order ID, date, and amount. CSV is easy to inspect as text, but consumers must agree on delimiters, date formats, and missing values. Parquet groups values by column and can let analytical readers avoid unrelated columns. JSON is useful when a product has a variable list of attributes. Choose the representation from the data and reading pattern, not from the filename alone. Microsoft’s data lake storage guidance explains the storage and file-format distinction.

Extra Exact SKU sizing and reserved capacity math sit outside the fundamentals scope. Know which family fits the need first.

Workloads and roles

Transactional work writes consistent records now. Analytical work reads history and aggregates later—or in near real time.

Workload and role distinctions for DP-900.
IdeaRemember
TransactionalOLTP style: create, read, update, delete on current business records with consistency and concurrency control.
AnalyticalOLAP style: large reads, historical context, aggregations, reporting, and machine learning feature prep.
Database administratorInstall, configure, secure, back up, restore, and tune database platforms; manage availability.
Data engineerIngest, transform, and land data in reliable pipelines and stores for downstream consumers.
Data analystExplore data, build models and visuals, and answer business questions with tools such as Power BI.

Domain 2: Relational concepts

Relational data lives in tables related by keys. Normalization reduces redundant copies of the same fact by splitting into related tables. Common SQL statements include SELECT, INSERT, UPDATE, and DELETE. JOIN is a clause used within queries to combine rows; it is not a standalone statement. CREATE, ALTER, and DROP define or change database objects. Common objects include tables, views, indexes, stored procedures, and constraints such as primary and foreign keys.

Suitable indexes can speed selected lookups and filters, but take storage and add work when indexed data changes. Views present a query as a virtual table. Stored procedures package reusable logic on the server. Constraints enforce rules the application alone might miss.

SQL worked example: customers, orders, and totals

Use this small fictional dataset to reason through a query before memorizing SQL vocabulary. Customers contains one row per customer, identified by CustomerID. Orders contains one row per order, identified by OrderID, and references Customers through CustomerID. The relationship is one customer to many orders. The sample is printed here for inspection; this page does not connect to a database or execute SQL.

Customers: CustomerID is the primary key.
CustomerIDCustomerName
1Ada
2Ben
3Cleo
Orders: CustomerID is a foreign key; Amount uses one shared currency.
OrderIDCustomerIDAmountStatus
101140.00Paid
102160.00Paid
103225.00Pending
104230.00Paid

Read, filter, join, and aggregate

The question is “How much has each paying customer spent?” First join orders to customers through the matching key. Then keep paid orders, group them by customer, and add the amounts. Sorting the totals makes the highest amount appear first. This SELECT reads data without changing the source rows.

SELECT c.CustomerID, c.CustomerName,
       SUM(o.Amount) AS PaidTotal
FROM Customers AS c
INNER JOIN Orders AS o
  ON o.CustomerID = c.CustomerID
WHERE o.Status = 'Paid'
GROUP BY c.CustomerID, c.CustomerName
ORDER BY PaidTotal DESC;

Expected result: Ada has 100.00 and Ben has 30.00, in that order. Ben’s pending 25.00 order is excluded. Cleo does not appear because an INNER JOIN requires a matching order. Grouping by the ID as well as the name avoids combining different customers who happen to share a name.

WHERE filters input rows before aggregation. GROUP BY defines the groups, SUM produces a total for each group, and ORDER BY controls display order. HAVING would filter the groups after aggregation: adding HAVING SUM(o.Amount) > 50 before ORDER BY leaves only Ada. JOIN belongs to the FROM portion of this query. See the Microsoft SELECT reference for clause definitions.

Normalization protects current facts; snapshots preserve history

Storing a customer’s current contact details once avoids updating many order rows when those details change. A foreign key links each order to the customer record. However, the address used to deliver an old order is a historical fact. Updating the customer’s current address must not silently rewrite where that parcel was shipped. A deliberate shipping-address snapshot on the order can therefore be appropriate. Reducing accidental duplication and preserving historical evidence are compatible goals.

Distinguish an entity’s current attributes from the facts captured by an event. In the example, Amount belongs to the order: calculating an old sale using today’s product price could change historical revenue. Before suggesting normalization, identify what each value means and when it is supposed to change. A database design is more than a rule to remove every repeated value.

Transactions and ACID in a checkout

Suppose a checkout creates an order and reserves inventory in the same database transaction. Atomicity means both operations succeed or both are rolled back. Consistency means declared rules remain satisfied, such as a valid customer reference. Isolation controls how concurrent operations interact; the chosen isolation level affects what other transactions can observe. Durability means a committed change persists despite a subsequent failure.

A transaction boundary must be designed explicitly. Two separate web requests do not become one atomic database transaction simply because they happen at checkout. An external payment processor also needs coordination beyond a local transaction. For DP-900, recognize why operational systems need dependable updates and why a folder of files alone does not supply relational constraints.

Azure SQL family

Same SQL Server lineage, different management boundary.

Azure SQL products named in the DP-900 study guide.
ProductModelUse when
Azure SQL DatabasePaaS single database or elastic poolsCloud-native apps that want Microsoft to manage the platform
Azure SQL Managed InstancePaaS near-full instance compatibilityLift-and-shift that needs instance-scoped features with less OS work
SQL Server on Azure VMsIaaSYou need full control of the OS, SQL version, and install options

Shared Azure vocabulary for IaaS versus PaaS is on the AZ-900 service types notes.

Open-source Azure database services

Azure Database for MySQL Flexible Server and Azure Database for PostgreSQL Flexible Server provide managed open-source relational engines. Choose them when the application already targets that engine and you want Azure to handle patching, backups, and high availability options. Choose based on the application’s engine, supported features, and access patterns; a relational service and a document service are not interchangeable just because both are managed.

Retired service: Azure Database for MariaDB retired on September 19, 2025. Older preparation material may still list it. The MariaDB database engine itself is separate from this retired Azure service. Evaluate migration compatibility rather than assuming MariaDB and MySQL are identical. See the Microsoft lifecycle announcement.

Domain 3: Azure Storage capabilities

Pick the service from how clients access the data.

Azure Storage services named for non-relational considerations.
ServiceHoldsAccess pattern
Azure Blob storageUnstructured objects; also a foundation for data lakesREST/object APIs; hot, cool, cold, and archive access tiers
Azure FilesManaged file sharesSMB or NFS as a network file share
Azure Table storageNoSQL key and attribute entitiesPartition key plus row key lookups; not relational joins

Blob is not a file share. Files is not a document database. Table storage is not a substitute for Azure SQL when you need joins and transactions across related tables.

Azure Cosmos DB

Cosmos DB is a globally distributed, multi-model database service. Use cases include low-latency reads and writes at global scale, flexible schemas, and multiple consistency options. You select an API that matches how the application talks to data.

Extra Throughput RU/s tuning and multi-region write conflict detail belong to role-based exams. DP-900 expects use-case and API recognition.

Domain 4: Large-scale analytics elements

Ingest, store for analysis, then process—often with Fabric or Databricks in the Microsoft cloud story.

  • Ingestion and processing — land data from sources, clean and transform it, and write to analytical stores. Pipelines may batch or stream.
  • Analytical data stores — warehouses, lakes, and lakehouses optimized for scans and aggregates rather than single-row OLTP.
  • Microsoft Fabric — unified analytics platform covering lakehouse, warehouse, pipelines, real-time, and BI experiences in one Microsoft cloud offering.
  • Azure Databricks — Apache Spark-based analytics and AI workspace for large-scale data engineering and data science.

Fabric and Databricks can both appear in large-scale analytics scenarios. Read the stem for the emphasis: unified Microsoft Fabric platform versus Spark-centric Databricks collaboration.

Choose an analytics path from the business question

Data lake, warehouse, and lakehouse

A data lake retains files in multiple formats so that different consumers can explore and process them. A warehouse organizes curated analytical tables for consistent reporting. A lakehouse adds table management and analytical capabilities over lake storage. These patterns can coexist: keeping source files helps with reprocessing, while curated tables give report authors stable definitions.

Consider a shop that receives order exports, supplier spreadsheets, and product photographs. The lake can retain all three. A warehouse might contain validated sales facts joined to product and date dimensions, rather than placing every photograph in a sales table. A lakehouse can provide managed analytical tables over files. Simply copying miscellaneous files into a container does not automatically create a usable warehouse or a governed lakehouse.

ETL versus ELT: where transformation happens

In extract, transform, load (ETL), a processing step cleans or reshapes source data before loading the destination. In extract, load, transform (ELT), data is loaded first and transformed using the destination’s processing capabilities. For example, standardizing currency codes before loading a reporting table is ETL; loading source rows to a warehouse staging area and then transforming them there is ELT. Neither term by itself specifies whether a business report refreshes every hour or every day. See Microsoft’s ETL and ELT guide.

Freshness and correctness are separate requirements

A delivery team might need an alert within seconds when a vehicle’s temperature exceeds a threshold. Finance may need a reconciled total after the day closes. The first requirement points toward streaming; the second can use a batch job that processes a bounded daily dataset. A streaming pipeline still needs rules for repeated events, missing readings, and events that arrive late. “Real time” describes a latency objective, not a guarantee that every received value is accurate.

Keep ingestion and computation separate in your explanation. Event Hubs accepts and buffers event streams for consumers; a processor such as Azure Stream Analytics calculates a time-window average or detects a condition. A destination stores the output, and a report presents it. Receiving events alone does not calculate a five-minute average. A fresh chart also depends on how its data reaches the model and how the report updates.

A small Power BI model you can explain

Take one Sales row per sold item. Its product key, date key, quantity, and sale amount describe a business event. Product and Date tables supply the names and calendar attributes used to group those events. A measure such as total sales is evaluated for the current filters, so choosing a month changes the result without changing the underlying order records. The row-level detail is the model’s grain; mixing monthly targets with individual order rows without a deliberate relationship can duplicate totals. See Microsoft’s star schema guidance.

A Power BI report can have several pages for exploration. A dashboard is a single canvas in the Power BI service that summarizes selected highlights and can combine tiles from different reports. These terms are not interchangeable with the semantic model behind them. See Microsoft’s dashboard introduction.

For the shop, use a line chart for daily revenue, a bar chart to compare product categories, and a table when someone needs exact order values. A map is useful only if location contributes to the question. Label currency and time periods, avoid combining different units on an unexplained axis, and show the refresh date when old data could mislead a decision.

Batch versus streaming and real-time services

Batch data has a start and an end for a job: nightly sales files, weekly extracts. Streaming data is continuous: clickstreams, IoT telemetry, fraud signals. Real-time analytics services on Azure include options such as Azure Stream Analytics, real-time capabilities in Microsoft Fabric, and event ingestion paths such as Azure Event Hubs that feed streaming processors. Match the service to whether you need continuous processing or scheduled batch jobs.

Data visualization in Microsoft Power BI

Power BI turns prepared data into interactive reports and dashboards for business users.

Capabilities

Connect to many sources, shape data, build semantic models, author reports, publish to the Power BI service, and share dashboards. Mobile and embed scenarios exist; fundamentals focus on what Power BI is for.

Data models

Tables, relationships, measures, and hierarchies define how visuals calculate. A star schema with fact and dimension tables is a common analytical model shape.

Visualizations

Line charts show trends over time. Bar or column charts compare categories. Pie or donut charts show parts of a whole when categories are few. Maps show geography. Tables and matrices show detail. Choose the visual that answers the question.

Worked scenarios

Explain each scenario out loud before you read the choice. Name one wrong alternative and why it fails the constraint.

  1. Checkout cart consistency. A retail app must insert an order and its line items together or not at all. Prefer a transactional relational store such as Azure SQL Database over Blob storage for the operational records.
  2. Product images for a catalog. Millions of image files with occasional reads fit Azure Blob storage. Azure Files would be the wrong fit unless clients need SMB share semantics.
  3. Legacy SQL Server with linked servers and agent jobs. Azure SQL Managed Instance or SQL Server on Azure VMs is more likely than a single Azure SQL Database, depending on how much OS control you still need.
  4. Existing MongoDB application moving to Azure. Evaluate Azure Cosmos DB for MongoDB when MongoDB-compatible access is required. Check supported commands and versions before assuming an application can move unchanged. Rewriting to Azure SQL requires a different data model.
  5. Clickstream fraud signals within seconds. Streaming analytics, not a nightly batch warehouse load alone.
  6. Executive trend report by region. A Power BI line or map visual on a modeled dataset, not raw Event Hubs consumption by every executive.

Practice DP-900 reasoning without an Azure subscription

You can complete these exercises on paper or in a local text editor. They need no account, paid resource, or personal dataset. Explain each answer in a sentence before opening the suggested answer; recognizing a service name is less useful than identifying the constraint that makes it fit.

1. Include customers who have no paid orders

How would the SQL example include Cleo with a zero total? Start with Customers, use a LEFT JOIN, place the paid-status condition in the join condition, and use COALESCE around SUM to turn a missing total into zero. Keeping the paid-status filter in WHERE would discard the unmatched customer rows. This exercise tests join behavior, not just SQL keywords.

2. Explain why a file extension is not a workload

The same CSV export could feed a nightly report or be read by an operational import. The file format describes representation; the workload describes what the system does. Identify the consumer, freshness requirement, and access pattern before choosing a service. A question about flexible fields is different from a question about millions of historical rows.

3. Choose between a managed SQL instance and a VM

A migrated application requires SQL Server Agent jobs but no operating-system access. Evaluate Azure SQL Managed Instance and verify feature support. If a required component must be installed directly on the database server’s operating system, SQL Server on an Azure VM becomes the stronger candidate. “Existing SQL Server” alone is insufficient to decide.

4. Review a misleading analytics diagram

A diagram says “Event Hubs → executive average-temperature chart” and omits computation. Add a processing step that defines the averaging window, a destination or serving layer for the results, and the reporting model. Then ask how late readings and refresh delays affect the interpretation. The missing processing responsibility matters more than how many service logos appear.

Turn practice misses into a useful revision plan

After a practice session, write down the question ID, the decision you missed, and the clue you overlooked. Revisit the matching section above, then explain why the nearest alternative fails. For example, “Files because the application requires SMB” is more actionable than “remember storage.” Retry missed items after a break and also answer unfamiliar examples; recognizing yesterday’s option wording can inflate your apparent progress.

Finish by checking every objective in the official DP-900 study guide. The local bank uses an editorial allocation within the published ranges, not an exact model of a live exam. Its raw percentage cannot be converted into Microsoft’s scaled passing score. Use the explanations and domain report to find gaps rather than treating a single result as a booking recommendation.

Frequently asked questions

What is the difference between Azure SQL Database and Azure SQL Managed Instance?

Azure SQL Database is a fully managed PaaS database service for cloud-native apps. Azure SQL Managed Instance offers near-full SQL Server compatibility as managed PaaS, which helps lift-and-shift migrations that need instance-level features. SQL Server on Azure Virtual Machines is IaaS: you manage the OS and SQL Server.

When do you use Azure Blob storage instead of Azure Files?

Use Blob storage for unstructured objects such as images, videos, backups, and data lake files. Use Azure Files when applications or users need a managed file share with SMB or NFS semantics.

How do batch and streaming analytics differ?

Batch analytics processes bounded data in scheduled or on-demand jobs. Streaming analytics processes continuous event data with low latency as it arrives. Choose streaming when decisions depend on fresh events rather than overnight aggregates.

Continue the Azure Data Fundamentals study path

Drill the distinctions, then test them under a timer.

Azure Data Fundamentals hub →
Available

Overview

Exam format, the 700 passing score, domain weights, and a study plan.

Available · You are here

Core Notes

Reference notes for data concepts, Azure SQL, Cosmos DB, Fabric, and Power BI.

Available

Practice Exams

80 original questions with custom exams, explanations, and a score report by domain.

Connect these notes with adjacent skills and certification topics.