Study guide
9.4 Visualization, Notebooks, SQL Analytics, Sampling & Skew
AWS Certified Data Engineer - Associate DEA-C01
Track your progress as you read
Finished sections get a check mark.
1 Chapter 1: Streaming Data Ingestion
1.1 Kinesis Data Streams vs. Firehose Architecture & Partitioning 1.2 Amazon MSK (Managed Streaming for Apache Kafka) & Serverless Patterns 1.3 Event-Driven Streaming Ingestion with DynamoDB Streams & Lambda 1.4 Streaming Distribution, Replay & Processing State
2 Chapter 2: Batch Data Ingestion & Migration
2.1 AWS DMS (Database Migration Service) & Change Data Capture (CDC) 2.2 S3 Batch Operations & High-Throughput Bulk Data Ingestion 2.3 Hybrid Data Transfer with Snow Family & AWS DataSync 2.4 Application, API & Managed File Ingestion
3 Chapter 3: ETL Transformation with AWS Glue
3.1 AWS Glue Jobs, DynamicFrames & PySpark Transformations 3.2 Glue Crawlers, Data Catalog & Schema Evolution 3.3 Data Preparation & Quality Rules with AWS Glue DataBrew & Data Quality 3.4 Incremental Processing with AWS Glue Job Bookmarks & Partition Processing 3.5 Technical and Business Catalogs, Connections & Lineage
4 Chapter 4: Big Data Processing & Workflow Orchestration
4.1 Amazon EMR Cluster Architecture, Spark & Hadoop Ecosystem 4.2 EMR Serverless & Instance Selection (On-Demand vs. Spot Optimization) 4.3 Serverless Orchestration with AWS Step Functions 4.4 Airflow Pipeline Orchestration with Amazon MWAA 4.5 Containers, Lambda & Distributed Processing Performance 4.6 Data Engineering Code, IaC & CI/CD
5 Chapter 5: Object Storage & Data Lake Architecture
5.1 Amazon S3 Storage Classes, Lifecycle Policies & Cost Optimization 5.2 S3 Data Lake Partitioning, Bucketing & Layout Strategies 5.3 Efficient Columnar Formats: Parquet, ORC, and Avro Schema Design 5.4 S3 Performance Optimization, Multipart Uploads & Transfer Acceleration 5.5 Apache Iceberg, S3 Tables & Open Table Operations
6 Chapter 6: Data Warehousing with Amazon Redshift
6.1 Amazon Redshift Architecture, RA3 Nodes & Managed Storage 6.2 Redshift Data Modeling: Distribution Styles (KEY, EVEN, ALL) & Sort Keys 6.3 Loading & Unloading Data with COPY/UNLOAD & Redshift Spectrum
7 Chapter 7: NoSQL, Relational & Specialty Data Stores
7.1 Amazon DynamoDB Partition Keys, Global Secondary Indexes & Data Modeling 7.2 Amazon RDS & Aurora Operations, Read Replicas & Multi-AZ 7.3 Graph & Analytical Querying with Amazon Neptune, OpenSearch & Athena 7.4 Vector Stores, Indexes & LLM Data Processing
8 Chapter 8: Pipeline Operations, Monitoring & Observability
8.1 Monitoring Pipeline Health with Amazon CloudWatch Metrics & Logs 8.2 Event-Driven Alerting & Automation with EventBridge & CloudWatch Alarms 8.3 Centralized Audit Logging with AWS CloudTrail
9 Chapter 9: Troubleshooting, Data Quality & Performance Tuning
9.1 Diagnosing & Resolving AWS Glue, EMR & Lambda Execution Failures 9.2 Redshift & Athena Query Performance Tuning & Memory Management 9.3 Implementing Data Quality Frameworks & Automated Validation Checks 9.4 Visualization, Notebooks, SQL Analytics, Sampling & Skew
10 Chapter 10: High Availability, Backup & Cost Optimization
10.1 Disaster Recovery, Cross-Region Replication & Backup Strategies 10.2 Designing High Availability Architectures Across AWS Data Services 10.3 Cost Optimization & Resource Utilization across Analytics Workloads
11 Chapter 11: Data Security, Encryption & Identity Management
11.1 Fine-Grained Access Control with AWS IAM Policies, Roles & Conditions 11.2 Data Encryption at Rest & in Transit with AWS KMS & S3 Bucket Policies 11.3 Secure Credentials & Secrets Management with AWS Secrets Manager & Parameter Store 11.4 Private Network Connectivity & Isolation with AWS PrivateLink & VPC Endpoints
12 Chapter 12: Data Governance, Privacy & Compliance
12.1 Centralized Data Lake Governance & Access Control with AWS Lake Formation 12.2 Automated Sensitive Data Discovery & PII Protection with Amazon Macie 12.3 Configuration Auditing & Compliance Enforcement with AWS Config 12.4 Data Privacy, Sovereignty, Sharing & Retention Guardrails 12.5 SageMaker Unified Studio Domains, Projects & Catalog Governance
9.4 Visualization, Notebooks, SQL Analytics, Sampling & Skew
Key Takeaways Explain This Topic AI
QuickSight dashboards and DataBrew profiles are consumption and exploration tools; correctness still depends on governed datasets, refresh status, row-level controls, and reconciliation.
SQL window functions calculate rolling values without collapsing detail rows, while GROUP BY aggregates rows and conditional aggregation can implement pivots.
Athena notebooks use Apache Spark for interactive exploration; move repeatable production logic into version-controlled jobs with bounded resources and observable outputs.
Use random or stratified samples for representative analysis, targeted samples for rare errors, and key-frequency plus partition-size metrics to diagnose data skew.
Last updated: August 2026
9.4 Visualization, Notebooks, SQL Analytics, Sampling & Skew
Data operations include analyzing whether output is credible, not merely checking that a job reached SUCCEEDED. Exploration, visualization, SQL summaries, and sampling help an engineer find anomalies before consumers do.
Visualization and profiling
Amazon QuickSight builds datasets, analyses, and dashboards over supported sources. A dashboard can expose a sudden null spike, lagging Region, or distribution shift, but the visual is only as current and authorized as its dataset. Monitor ingestion or direct-query errors, refresh time, row count, and row-level-security rules. Publishing a dashboard is not proof that its underlying calculation is correct.
AWS Glue DataBrew provides visual profiling and recipe-based preparation. A profile can reveal missing values, duplicates, distributions, and correlations. Use it for exploration and repeatable low-code preparation, then persist recipe and job versions. For production enforcement, express critical expectations in Glue Data Quality or another test framework so failure has a defined pipeline outcome.
SQL aggregation and windows
GROUP BY collapses rows into one row per grouping key. A window function calculates across related rows while retaining each row.
- Need SQL pattern
- Daily revenue by store SUM(amount) with GROUP BY store and date
- Seven-day rolling average AVG(daily_amount) OVER ordered rows frame
- Latest record per customer ROW_NUMBER OVER partition by customer ordered by event time descending
- Categories as columns Conditional SUM with CASE expressions or engine pivot support
A rolling average needs an explicit frame. ROWS BETWEEN 6 PRECEDING AND CURRENT ROW counts rows, not necessarily seven calendar days when dates are missing. Build a date spine or use the engine's time-range semantics when the business requires calendar windows.
Create views to centralize reusable logic, but remember that a standard view stores SQL, not materialized results. A materialized view stores derived results and needs refresh behavior. In Redshift, automatic refresh eligibility and incremental behavior depend on the definition; monitor staleness rather than assuming refresh is immediate.
Athena notebooks with Apache Spark
Athena notebooks provide interactive Apache Spark sessions for exploration and development. They can inspect data, test PySpark transformations, and visualize results without provisioning an EMR cluster. A notebook is not automatically a production pipeline. Interactive state, manually executed cells, and uncommitted code make a result hard to reproduce.
Move stable logic into version control, parameterize inputs and output paths, test it, and run it through a scheduled job or orchestrator. Stop idle sessions and set capacity controls because serverless removes cluster administration, not cost.
Provisioned versus serverless
Serverless services reduce capacity planning and fit bursty or intermittent work. Provisioned services can be better for steady utilization, custom configuration, predictable reserved capacity, or requirements not supported by the serverless variant.
Evaluate:
- startup latency and concurrency;
- sustained versus burst utilization;
- resource or configuration control;
- maximum runtime and workload isolation;
- networking and software dependencies;
cost at the measured duty cycle.
Do not call serverless free when idle without checking minimum commitments, storage, requests, or provisioned-capacity settings.
Sampling techniques
A simple random sample gives each row an equal chance, but a rare class may be absent. A stratified sample samples within groups so important Regions, labels, or customer tiers are represented. A systematic sample selects every nth ordered record and can be biased by periodic patterns. Reservoir sampling maintains a fixed-size sample from a stream of unknown length.
For quality monitoring, combine representative samples with targeted samples of recent schema changes, rare categories, quarantined rows, and high-value records. Record the population, seed or method, strata, and sample time so results can be interpreted and reproduced.
Diagnosing data skew
Skew means partitions receive unequal work. Symptoms include one Spark task running far longer, a large maximum partition size, spill or OOM on one executor, Redshift distribution skew, or one Kinesis shard throttling while others are idle.
Measure key frequencies before choosing a remedy. Options include:
Salt a hot join key and expand the matching small-side keys.
Pre-aggregate high-volume keys before the shuffle.
Broadcast a truly small dimension.
Use adaptive query execution or engine skew-join handling where supported.
Redesign partition or distribution keys around actual access patterns.
Random repartitioning can spread work but may destroy required co-location or ordering. Fix the business-key distribution intentionally, then compare maximum task duration and shuffle size before and after the change.
Operational publication
Every analytical output should expose source watermark, generation time, rule or query version, row count, and known exclusions. Consumers need to distinguish no events occurred from the refresh failed . Freshness and completeness belong next to the chart, not hidden in an operator log.