Prepare and test your skills

Prepare and test your skills

Observability of data processes is the practice of using metrics, logs, traces, and admin views to explain performance, cost, and security behavior. BigQuery (opens in a new tab) slot usage, Dataflow stage health, and audit activity flow into different tools that answer different questions. Together they let operators separate slow query design from contention for shared capacity and separate code failures from quota or permission blocks.
How BigQuery executes queries explains where computational capacity is spent and why repeat runs can differ. A slot is a unit of computational capacity, and Google manages the servers, memory, and petabit network behind each slot. When a query starts, BigQuery builds an execution tree that divides work into stages containing steps that run in parallel across workers. Stages exchange intermediate data through a fast distributed shuffle tier that uses RAM and the petabit network, and BigQuery can dynamically adjust the plan as intermediate results arrive. When execution finishes, results are written to compressed, encrypted, replicated distributed storage and returned, which allows the next identical query to be served from cache.
BigQuery smooths variance through parallel execution and fair scheduling. Many queries run in parallel and can queue until resources are free, and as queries start and finish BigQuery redistributes slots fairly between new and running queries. Performance therefore depends more on the number of concurrent queries than on submission order. Because of shared resources, cached results, and dynamic replanning, repeated queries over the same data can show different execution times.
Slot reservations are buckets of dedicated query-processing capacity that isolate important workloads from shared-pool contention. Administrators create reservations and assign projects, folders, or organizations to them, and multiple projects under one billing account can share the same reservation. Because BigQuery is a platform as a service (PaaS), scaling means changing reserved slots rather than resizing nodes or copying data. Storage and compute stay separate, so storage can grow to dozens of petabytes independently from compute.
| Pricing model | How cost is calculated | Capacity control |
|---|---|---|
| On-demand pricing | Pay for bytes scanned by each query | Fixed query-processing capacity per project |
| Capacity-based pricing | Purchase dedicated slot capacity through reservations | Configurable reservations assigned to projects, folders, or organizations |
Workload behavior is routed to different capacity pools. Interactive queries execute as soon as possible and are the default for low-latency analysis. Batch queries are queued and start when idle resources are available in the shared pool. Slot reservations provide dedicated capacity for concurrency, predictable performance, or cost isolation. Load and extract jobs are free operations that run in a public pool rather than consuming reservation slots.
Slot and query monitoring combines the BigQuery admin panel, Cloud Monitoring, and job-level metadata. BigQuery resource charts show how an organization, folder, or reservation uses slots over time. Cloud Monitoring separates total available capacity from actual consumption by project, reservation, and job type. To view reservation-wide usage, consuming projects must be added explicitly to the metrics scope of the project where the dashboard is viewed.
Key Cloud Monitoring signals include slots used by project, slots used by project and job type, slots used by project with reservation and job type, total slots available to the project, slots used across projects in reservations, query count, execution count, and non-cached execution times reported as 5th, 50th, 95th, and 99th percentiles. Job-level diagnosis uses the query plan and timeline to show stages, steps, and data flow through the shuffle tier. A stage that writes much more output than other stages often means filtering should happen earlier. Execution details can be requested through INFORMATION_SCHEMA.JOBS views or the jobs.get REST API method to analyze slot milliseconds, bytes processed, queuing time, and stage bottlenecks, while audit logs add user activity and system events.
Exam tip: Total slots shows capacity available to one project, while slots used across projects in reservations shows consumption across all projects sharing that reservation and requires those projects in the metrics scope.
Centralized logging with Cloud Logging collects detailed event and error context from applications, Dataflow workers, and infrastructure into one global service. Telemetry data and metrics are encrypted at rest, and access is controlled by Google Cloud project read permissions. Because Cloud Logging is global, project-level permissions are the boundary that decides who can read retained logs. Log messages can identify a stuck user transform in batch or streaming pipelines and can help catch anomalies that suggest an attack against Cloud Storage buckets.
Log routing boundaries and audit controls define where data may travel and how long evidence remains trustworthy. If a pipeline uses Dataflow Shuffle or Dataflow Streaming, the region is specified without a zone and Dataflow auto-selects the zone inside that region. End-user data in transit stays within worker virtual machines (VMs) in the same zone, while jobs can still read from and write to sources and sinks outside that zone. Data sent to the Shuffle or Streaming services remains in the region specified in pipeline code. Customers remain responsible for securing their own Dataflow applications, including customer-managed encryption keys, networks and VPC Service Controls, permissions for sources and sinks, secure coding, vulnerability testing, and monitoring for security incidents. Do not mix different trust levels in a single project, because shared read permissions would blur the audit boundary.
Proactive dashboards and alerts in Cloud Monitoring track health against service-level objectives (SLOs) for availability, throughput, error rate, and latency. Metrics flow from GKE nodes, Cloud Run instances, training platforms, and serving frameworks into Cloud Monitoring, where pre-built dashboards cover Google Cloud services and custom dashboards track workload-specific indicators. Metrics from vLLM or NVIDIA Triton Inference Server flow through Google Cloud Managed Service for Prometheus, while request flows go to Cloud Trace for latency analysis and function-level timing goes to Cloud Profiler (opens in a new tab) for code optimization. Every dashboard should track the four golden signals: latency, traffic volume, error rate, and saturation of CPU, memory, and GPU or TPU accelerators.
Dataflow job metrics locate the inefficient stage when backlog grows or system lag rises. The backlog_bytes metric measures unprocessed input in bytes by stage and finds a fused step with no throughput, while backlog_elements counts pending elements. The processing_parallelism_keys metric measures parallel keys over the last five minutes to narrow hot-key skew and insufficient parallelism. The system_lag and per_stage_system_lag metrics measure maximum time data has spent processing or awaiting processing to identify slow stages and source bottlenecks. Alerting policies evaluate metric conditions against thresholds, such as growing Pub/Sub unacknowledged messages plus rising backlog bytes, to distinguish a transient retry storm from a sustained capacity shortfall.
Monitoring planned usage is the practice of comparing historical consumption and forecasts against budgets, quotas, and reservations before growth stops a pipeline. Cloud Billing provides reports and forecasts, export of billing records to BigQuery enables custom chargeback, and Cloud Quotas with Cloud Monitoring exposes limits on consumption. Together they connect cost planning, quota planning, and capacity planning into one workflow.
Budget planning creates the baseline that forecasts are measured against. Best practice is to use a single billing account across all projects, assign each project a billingcode metadata label to allocate cost between internal cost centers, and set budgets with alert thresholds. A budget can cover a single project, all projects in an environment folder, or all projects for a cost center, and threshold ownership can be delegated to workload owners. Initial estimates can be built with the Google Cloud Pricing Calculator from expected resources such as managed instance group size, machine type, persistent disks, or BigQuery slots and bytes scanned.
Visualization compares actual and forecasted usage to that baseline. Console billing reports support multi-dimensional views and forecasts without custom logic, while custom dashboards built on the BigQuery export track spending by cost center, project, folder, or service. Billing anomaly detection automatically flags spikes or deviations from expected spend. A sudden unexplained increase without a clear deployment cause can indicate a security incident and should be investigated for both cost and security reasons.
BigQuery export is the system of record for historical cost analysis beyond prebuilt reports. Billing data flows from Cloud Billing to BigQuery export tables in the prj-c-billing-export project, where queries aggregate charges and credits by label and service. A standard pattern groups projects by the billingcode label, returning cost center, service description, sum of cost as charges, and sum of credit amounts, ordered by cost center and description. Organizations that require internal accounting or chargeback feed these results into internal processes, and FinOps hub provides guidance on optimization.
Predictive budget alerts turn those forecasts into action. After a budget amount is established, threshold rules trigger email notifications that track actual or forecasted spending, such as alerting when forecasted spending is on track to reach 120% of budget. Budgets can also publish to programmatic endpoints that drive cost-control automation. An effective design defines scope to match accountability, sets both actual-spend and forecast thresholds, routes notifications to a monitored destination, and lets workload owners add granular thresholds for seasonality and growth.
Exam tip: Budget alerts notify on consumption against budgets you define for each project, while billing notifications from Essential Contacts notify on pricing updates, errors, and credits.
Quota types define what is restricted and where the restriction applies. Resource quotas limit the maximum resources that can exist, while rate quotas limit the number of API requests in a period. Quotas can be zonal, regional, or global, and review must cover both resource and API rate quotas for every service in the project. Quotas have defaults but can typically be adjusted, while system limits are fixed and require a workaround when reached. Enabling billing increases quotas for most services, and quotas generally apply at the project level so use in one project does not affect another.
| Quota type | What it restricts | Example |
|---|---|---|
| Resource quota | Maximum resources that can exist | Number of regional Google Kubernetes Engine (GKE) clusters in a region |
| Rate quota | Number of API requests in a period | Dataflow requests per minute per project |
BigQuery quotas (opens in a new tab) and limits apply by default per project, with specific exceptions per table, user, region, or dataset. The concurrent number of jobs in the pending state is limited to 50,000 jobs per project, per region, and this limit cannot be increased. Daily quotas replenish incrementally throughout the day rather than in one global refresh. Throughput is limited to a predefined slot quota shared among queries in the project, with on-demand billing using a shared pool and capacity-based billing using autoscaling reservations and optional commitments. Dataflow quotas constrain scale-up directly: each project can make up to 3,000,000 requests per minute, run at most 25 concurrent jobs by default, and run at most 125 concurrent jobs per organization when organization quotas are enabled. Each job can use up to 2,000 Compute Engine instances, or up to 4,000 instances for Streaming Engine or Dataflow Shuffle jobs without a specified worker zone.
Quota tracking with Cloud Monitoring (opens in a new tab) exposes consumption before a bottleneck stops a pipeline. The default BigQuery dashboard shows tables, events, incidents, query times, and the Slot Utilization chart for slots available versus slots allocated. Quota-specific monitoring uses the Consumer Quota resource type when building charts or alert policies. Services that support quota metrics include Compute Engine, Dataflow, Spanner, Pub/Sub, Cloud Vision, Speech-to-Text, Cloud Monitoring, and Cloud Logging, while App Engine and Cloud SQL do not. For BigQuery, quota usage and limit metrics are available only for Storage Write API concurrent connections and throughput quotas.
Proactive capacity management connects forecasting, benchmarking, reservations, and adjustment requests. Forecasting considers user count, request rate, historical trends, seasonal variation, special-event spikes, and growth such as expansion to new geographies. Capacity estimates translate load into machine types, managed instance group sizes, and disk counts with cost checked in the Pricing Calculator. Every component needs redundancy beyond minimum load, such as N+1 redundancy, and load tests under normal and peak conditions establish efficiency between load and CPU and memory consumption. When quotas are insufficient, increases can be requested through the console, a support case with live chat, or the account team with forecasting justification. The quota adjuster can submit adjustments automatically, while Capacity Planner shows historical and forecasted use of VMs, Persistent Disks, and GPUs alongside reservations and proximity to limits.
Continue with this study guide: Monitoring planned usage
Troubleshooting operational disruptions means tracing a symptom from its error payload or cost spike through telemetry and logs to a corrective action. BigQuery (opens in a new tab) errors surface in API responses, job metadata, INFORMATION_SCHEMA views, audit logs, and monitoring metrics. Billing anomalies surface in reports, anomaly detection, and budget alerts. Quota failures surface in console pages, command output, and HTTP responses.
Checking quota usage means comparing configured maximums against consumed resources before workloads fail. In the console, the Quotas page with Filter table finds the service-specific quota such as BigQuery slots or Cloud Storage API requests. In the Google Cloud CLI (gcloud), gcloud compute project-info describe --project PROJECT_ID shows project-wide quotas and gcloud compute regions describe example-region shows used quota in a region. Checking quotas requires Project Owner, Project Editor, or Quota Viewer, while modifying quotas or requesting increases requires Project Owner, Project Editor, Quota Administrator, or a custom role with serviceusage.quotas.update.
Failure signals differ by access path. A gcloud command that exceeds quota outputs a quota exceeded message and returns exit code 1, while an API request returns HTTP 413 Request Entity Too Large. A BigQuery operation that exceeds quota returns HTTP 403 Forbidden with a JSON body containing reason of rateLimitExceeded or quotaExceeded and a message naming the limit. For diagnosis at scale, query region-REGION_NAME.INFORMATION_SCHEMA.JOBS for jobs where creation_time is within the last day and error_result.reason is rateLimitExceeded or quotaExceeded, and use Cloud Monitoring to track average and peak utilization against capacity.
BigQuery quota errors fall into two categories defined by the reason field, and the category determines whether to retry quickly or redesign the workload. Some limits can be increased through support or sales, while hard system limits cannot be increased and require architectural workarounds even when other quotas can grow.
| Error reason | Meaning | Response |
|---|---|---|
| rateLimitExceeded | Short-term burst limit reached | Retry after a few seconds with exponential backoff |
| quotaExceeded | Longer-term quota exhausted | Wait 10 minutes or longer, then analyze workload for optimization or quota increase |
Daily quotas such as load jobs per table replenish incrementally over 24 hours, so recovery does not require a full-day wait. Consistently reaching quotaExceeded means project quotas, organizational constraints, and system limits must be treated as separate layers. Project quotas may be raised, while system limits require reducing request rate, batching operations, spreading load across regions, or scheduling work outside peak windows. A quota is only a maximum that can be created if the resource exists, so available quota does not guarantee creation when regional or zonal capacity is depleted.
Exam tip: Retry rateLimitExceeded after seconds with exponential backoff, but wait 10 minutes or longer for quotaExceeded — quota does not guarantee that the physical resource is actually available.
A structured BigQuery error response carries an HTTP status code, a reason string, and a human-readable message that together identify the root cause. The reason separates short-term pressure from sustained exhaustion, the message names the specific limit, and job execution logs add request IDs, slot consumption, spilled bytes, and queue time to confirm whether one job or many jobs triggered the condition. The bq command-line tool exposes the full structure through bq show -j JOB_ID or --format=prettyjson, which reveals nested details the console may summarize. The gcpdiag tool runs automated checks for IAM gaps, network restrictions, and service account errors when many jobs fail in ways that suggest project-level drift.
INFORMATION_SCHEMA views let operators query metadata with standard SQL scoped to region-REGION_NAME. Job execution telemetry in INFORMATION_SCHEMA.JOBS and JOBS_TIMELINE exposes slot-millisecond consumption, spilled bytes, queue times, and error codes to diagnose resourcesExceeded, out-of-memory, shuffle spill, and concurrency bottlenecks. Reservations and capacity views expose slot allocation and autoscaling behavior to diagnose starvation and assignment mismatches. Streaming timeline views expose ingestion latency and rate limits, while table storage views expose physical sizes and partition distribution. Cloud Audit Logs record who initiated each operation and explain PERMISSION_DENIED errors, while Cloud Monitoring tracks slot usage, query duration, and uploaded bytes to show whether usage is trending toward a limit before jobs fail.
Billing Reports are the primary console view for tracing an unexpected charge within the linked billing account. The reports page opens after selecting Billing and Go to linked billing account, and filters slice gross cost by project, service, SKU, label, and time range. Cost table reports show invoice-level detail, cost breakdown reports show a waterfall from on-demand price to net cost after credits, and the Transactions page shows payment history. When a spike appears, the investigation order is first isolate the project, then the service, then the resource or label, because only that order separates a workload-wide increase from a single runaway job.
The Anomalies dashboard automatically detects deviations by comparing current spend against historical patterns at on-demand rates. For AI workloads such as Gemini API and Vertex AI, early anomalies use near-real-time estimates for daily service-level insight. A sudden unexplained spike without a deployment cause must be investigated as both a cost issue and a possible compromise. With billing-account permissions, Billing > Cost management > Anomalies shows all linked projects; with project-scoped permissions it shows one project at a time. Cost allocation depends on applying a billingcode label before spend occurs and exporting billing data to a BigQuery dataset for grouping by cost center and service. That result flows into internal chargeback, while FinOps hub guidance helps adjust budgets, quotas, and reservations.
Cloud Billing budgets are alerts-only controls that track actual and forecasted costs against a planned amount. A budget defines a period of monthly, quarterly, yearly, or custom range, a scope, an amount as a specified total or prior-period spend, and threshold rules such as 50%, 100%, and 120%. Scope can cover the entire account, organizations, folders, projects, services such as Compute Engine or BigQuery, or resources with a specific label. The same threshold event can send role-based email and publish to a Pub/Sub topic for automation such as forwarding to Slack or disabling billing, and the Cloud Billing Budget API manages budgets programmatically at scale.
A new alerts-only budget is created in an ordered flow: first select the owning project and open Billing to the linked account, then open Budgets and alerts, then set scope and name, then set amount and thresholds, then configure notifications and save. Google Cloud quotas provide the hard-side complement by blocking or throttling use after the limit, which contains blast radius from an unbounded job or creation loop. Defensive SQL controls also prevent runtime failures: SAFE expressions such as SAFE_CAST(), SAFE_DIVIDE(), SAFE_OFFSET(), and SAFE_ORDINAL() return NULL instead of raising errors, and ASSERT enforces validation before downstream steps run. Together, budgets provide early warning while quotas and defensive checks limit damage.
Continue with this study guide: Troubleshooting error messages, billing issues, and quotas
Managing workloads means configuring jobs and queries for performance, monitoring them during execution, and controlling the compute capacity that powers them. BigQuery separates storage from compute and memory, so performance work focuses on execution plans while cost work focuses on slot consumption. Dataflow and Managed Service for Apache Spark add pipeline-level job monitoring, metrics, and autoscaling behavior.
Query execution in BigQuery breaks each query into parallel stages that move through shared infrastructure before results are saved. When a query starts, BigQuery builds an execution tree that divides work into stages with steps that run in parallel across workers. Stages exchange intermediate results through a fast distributed shuffle tier that stores output in RAM and moves it quickly to the next workers. BigQuery can adjust the plan dynamically as stage results arrive, while additional workers monitor progress. When execution finishes, results are written to persistent distributed storage and returned, which allows repeat queries to be served from cache.
The query plan is the main tool for finding why a query is slow or expensive. The plan describes stages and steps and can be viewed as a timeline and execution graph with performance insights for running or completed queries. Execution details can also be read with INFORMATION_SCHEMA.JOBS or the jobs.get REST API method. If one stage writes much more output than other stages, filtering should move earlier to reduce shuffled and scanned data. Concurrency is managed through interactive queries that execute as soon as possible by default, batch queries that wait for idle shared capacity, and slot reservations that provide dedicated capacity assigned to projects, folders, or organizations. As queries start and finish, resources are redistributed fairly, so concurrency level matters more than submission order.
The Dataflow monitoring interface is the console surface for viewing and interacting with Dataflow jobs. The jobs list shows running jobs and jobs from the last 30 days with status, region, and elapsed time. Each job view provides a job graph, execution details, metrics, cost, logs, and recommendations. Data flows from pipeline code and staged artifacts to Dataflow workers and then to sources and sinks, and the interface exposes lag and latency at each step. The project dashboard monitors jobs at project level, the jobs list covers recent jobs, and the job graph shows per-step progress with data freshness for streaming and worker progress for batch.
Dataflow job metrics are time-series charts on the Job metrics tab that help debug errors and improve performance. The Autoscaling dashboard plots actual workers against target workers, and for Streaming Engine jobs shows minimum and maximum workers. Overview metrics summarize freshness, system latency, throughput, and worker errors, while streaming metrics expose backlog, parallelism, persistence, duplicates, and timers. Resource metrics track CPU and memory, while input and output metrics track requests and connector errors. Monitoring charts show gaps rather than zero values when job data is briefly unavailable. Job monitoring for Managed Service for Apache Spark uses gcloud dataproc jobs describe, the REST jobs.get method with JobStatus and YarnApplication fields, console driver output, and Logging under Managed Service for Apache Spark Cluster. Disk exhaustion is a common Spark failure, with recommended minimums of 1000 GB for n1-standard-4 machines and 2 TB for n1-standard-32 machines.
Troubleshooting a Dataflow pipeline follows an ordered path from status to logs to root-cause stage. First check pipeline status in the monitoring interface, then inspect job error messages and step logs, then determine whether failure happened during graph construction, job validation, or worker execution, and then fix slow steps using lag signals. The job lifecycle moves through Running, Succeeded, or Failed, with detailed history in the job view. Job logs contain messages from pipeline code and the Dataflow service, while worker logs isolate exceptions on specific workers. The earliest error in the failed step usually identifies the cause because one failed step can create many downstream messages.
| Failure stage | When it occurs | Typical signal |
|---|---|---|
| Graph or pipeline construction | Before the service accepts the job, while Beam builds the graph | Local construction error or invalid transform graph |
| Dataflow job validation | After submission, while the service validates the job | Job rejected without workers starting |
| Worker code exception | After workers start, while user code processes elements | Step failure with stack trace in worker logs |
Slow pipelines need a lag-focused path. The job graph shows which steps accumulate lag, freshness and system-lag charts show source or sink delays, and autoscaling charts show whether worker count limits throughput. Cloud Monitoring extends this with dashboards and alerts on streaming lag or failed jobs, including turnkey alerts for backlog and resource use. Any Beam Counter or Distribution metric is reported as a custom metric, with distributions appearing as _MAX, _MIN, _MEAN, and _COUNT submetrics exported as double GAUGE values about every 30 seconds. Each project is limited to 100 Dataflow custom metrics in the dataflow.googleapis.com/job/user_counter namespace. A Dataflow snapshot saves the state of a running streaming pipeline so a new version can start without losing state, which supports backup, rollback, and migration to Streaming Engine. Execution also depends on separate Cloud Storage staging and temporary buckets, with a practical starting point of 7-day TTL for temporary data and 6-month TTL for staged artifacts.
Workload management models (opens in a new tab) define how BigQuery slots are provided and metered, and projects can switch models or combine them across projects. With on-demand billing, queries use a shared pool of slots and billing is based on bytes processed after monthly free usage. With capacity-based billing, slots are allocated through autoscaling reservations and optional commitments tied to a BigQuery edition. These models apply per project, so one project can use on-demand while another uses capacity-based purchasing.
| Model | Usage and metering | Capacity and control |
|---|---|---|
| On-demand | Data scanned, metered in TiB with 10 MiB minimum per query | Up to 2,000 slots per project from shared pool, no setup required |
| Capacity-based | Dedicated or autoscaling slots, metered in slot-hours with 1-minute minimum | Minimum 50 slots per reservation up to regional quota, requires reservations and assignments |
Slot reservations are pools of capacity-based slots that keep workloads from competing for the same compute. An administrator first creates a reservation in a region, then creates an assignment that routes a project, folder, or organization to that reservation, and only after assignment do jobs consume slots from that pool. For example, a reservation named prod can serve production while test serves testing, so test jobs do not consume production capacity. Failed load, copy, and query jobs that write to a destination still count toward quotas, so repeated retries increase cost and pressure.
Exam tip: On-demand allows up to 2,000 slots per project with no setup, while capacity-based starts at a minimum of 50 slots per reservation and requires explicit reservations and assignments.
Capacity commitments and autoscaling control how much baseline capacity is guaranteed and how much can burst for peaks. A commitment is a longer-term purchase for steady-state workloads, available as monthly or annual options, and commitments cost less than purely autoscaled capacity. An autoscaling reservation combines baseline slots that are always available with additional slots that BigQuery adds when demand rises, which preserves flexibility but bills for extra slot-hours. Opting in to fluid scaling removes the default 1-minute minimum duration, so very short bursts incur finer-grained charges.
Capacity estimation connects historical patterns to reservation sizing and reassessment. The Slot estimator in Preview estimates organization needs from historical performance, which helps translate past usage, complexity, and peak concurrency into baseline plus headroom. The Workload management page shows commitments and assignments, while Cloud Monitoring shows incidents, datasets, tables, query times, and slot utilization. The estimatedRunnableUnits field from the Job API, exposed as period_estimated_runnable_units in INFORMATION_SCHEMA.JOBS_TIMELINE, indicates whether more slots would have helped: when greater than zero, the job could have used more slots then. A high constrained percentage with a fully utilized reservation means the job was resource-constrained, so spread intensive queries over time, allow use of idle slots, or increase reservation size. Regular monitoring of utilization, execution plans, and wait times shows whether sustained high utilization plus high wait times requires more baseline, higher autoscale limits, or split reservations.
billingcode label.rateLimitExceeded for short-term burst limits retried with exponential backoff and quotaExceeded for longer-term exhaustion requiring a 10-minute wait and workload analysis.On-demand pricing pays for bytes scanned by each query using fixed shared-pool capacity per project, while capacity-based pricing purchases dedicated slot capacity through reservations assigned to projects, folders, or organizations. On-demand allows up to 2,000 slots per project with no setup, while capacity-based requires a minimum of 50 slots per reservation with explicit reservations and assignments before jobs consume them.
rateLimitExceeded means a short-term burst limit was reached and should be retried after a few seconds with exponential backoff, while quotaExceeded means longer-term quota was exhausted and requires waiting 10 minutes or longer then analyzing the workload for optimization or a quota increase. BigQuery returns HTTP 403 with a JSON body containing the reason and a message naming the limit.
The backlog_bytes metric measures unprocessed input in bytes by stage and finds a fused step with no throughput, while backlog_elements counts pending elements and processing_parallelism_keys measures parallel keys over the last five minutes to narrow hot-key skew and insufficient parallelism. The system_lag and per_stage_system_lag metrics measure maximum time data has spent processing or awaiting processing to identify slow stages and source bottlenecks.
Last updated