NYC Open Data

2026

NYC 311 Service Request Analytics

An end-to-end cloud analytics project analyzing nearly 1 million NYC 311 service requests to uncover demand patterns, service performance, geographic trends, and operational opportunities across New York City.

DATASET

995,577 Service Requests

DATASET SOURCE

NYC OpenData · Jan-Aug'26

TOOLS

Power BI · SQL · AWS Athena · Python

DATASET

995,577 Service Requests

DATASET SOURCE

NYC OpenData · Jan-Aug'26

TOOLS

Power BI · SQL · AWS Athena · Python

Overview

Turning nearly 1 million service requests into operational insight

NYC 311 generates a large volume of public service-request data across complaint categories, boroughs, and service statuses. This project analyzed 995,577 requests recorded from June 1 through August 30, 2026 to understand where service demand was concentrated, which issues were reported most frequently, and how efficiently requests were resolved.

I built an end-to-end analytics workflow using Python, AWS S3, Amazon Athena, SQL, Power BI, and DAX, transforming raw public-service data into an interactive operational reporting solution.

Project Scope

995,577 — Service Requests
June–August 2026 — Analysis Period
6 — Core Analytical Fields
NYC Open Data — Data Source

Tools

Python · SQL · AWS S3 · Amazon Athena · Power BI · DAX

Business Problem

Understanding demand and service performance across NYC

NYC 311 service requests span hundreds of complaint types and multiple geographic areas, making it difficult to evaluate demand and service performance from raw records alone. City operations require a consolidated view of request volume, complaint patterns, geographic concentration, status, and time to closure to identify where demand is highest and where resolution performance may require further investigation.

Analytical Questions

  1. Which complaint types generate the highest request volume?

  2. Which boroughs experience the greatest service demand?

  3. What proportion of requests are closed versus unresolved?

  4. How long does it take to close service requests?

  5. Which complaint categories experience the longest closure times?

  6. How does request volume change over time?

  7. How does closure performance vary across boroughs?

Data & Methodology

Building an end-to-end cloud analytics workflow

The analysis began with NYC 311 service-request data from NYC Open Data. Using Python, I prepared the dataset and retained six fields required for the analysis: Unique Key, Created Date, Closed Date, Complaint Type, Borough, and Status.

The prepared dataset was uploaded to Amazon S3 for cloud storage and queried through Amazon Athena. SQL analysis was then used to evaluate request volume, complaint frequency, borough demand, status distribution, closure time, and temporal patterns.

Analysis Areas

Demand Analysis
Request volume by complaint type and borough

Status Analysis
Closed and unresolved service requests

Performance Analysis
Overall, complaint-level, and borough-level closure times

Trend Analysis
Changes in service-request volume over time

Geographic Analysis
Demand and service performance across NYC boroughs

Analysis

From service-request volume to operational performance

Demand

Brooklyn recorded the highest request volume with 309,479 requests, followed by Queens with 258,382 and the Bronx with 200,363. This indicates that service demand was not evenly distributed across the five boroughs.

Complaint Patterns

Illegal Parking was the most frequently reported complaint with 155,204 requests, followed by Noise – Residential with 93,862 and Noise – Street/Sidewalk with 72,400. The results show that a relatively small number of complaint categories contributed substantial portions of overall demand.

Request Status

927,226 requests were closed, representing 93.13% of all requests during the analysis period. Remaining requests were distributed across In Progress, Open, Assigned, Pending, Started, and unspecified statuses.

Closure Performance

The Power BI model shows an overall average closure time of approximately 112.7 hours, revealing that high closure volume does not necessarily translate to uniformly fast resolution.

Closure time varied substantially by complaint type, highlighting the importance of analyzing service volume and resolution duration separately rather than assuming the highest-volume issues are also the slowest to resolve.

Geographic Performance

Among the five named boroughs, Manhattan recorded the longest average closure time at approximately 123.7 hours, while Queens recorded the shortest at approximately 91.1 hours.

Dashboard

Transforming analysis into an interactive decision-support tool

The final Power BI dashboard consolidates demand, status, geographic, trend, and closure-performance metrics into a single operational view. A detailed request-level table containing 995,577 individual records was incorporated into the semantic model so that dashboard measures respond dynamically to user selections.

Users can filter the analysis by date, borough, complaint type, and status, allowing the same dashboard to support both citywide monitoring and focused investigation of specific service patterns.

Core Dashboard Metrics

~996K Total Service Requests
927K Closed Requests
~68K Non-Closed Requests
93.1% Closure Rate
112.7 hrs Average Closure Time

Insights & Recommendations

Turning analytical findings into operational action

Key Takeaway

The analysis shows that service demand and service performance represent different operational challenges. High-volume complaint categories create workload pressure, while long-resolution categories reveal different potential process constraints. Evaluating both dimensions together provides a more useful view of operational performance than request volume alone.

Recommendations

  • Prioritize recurring high-volume complaints

    Use complaint-volume patterns to identify categories generating sustained service demand and determine where targeted operational investigation may have the greatest impact.


  • Investigate long-resolution workflows

    Review complaint categories with unusually high closure times separately from high-volume categories to identify potential process, routing, or service-delivery bottlenecks.


  • Monitor geography and performance together

    Compare borough-level request demand with closure performance to distinguish areas experiencing high workload from areas experiencing slower resolution.

Limitations

The analysis covers June through August 2026 and is based on six core service-request fields. The dataset does not include staffing levels, budgets, service-level agreements, operational complexity, or internal workflow information. The findings therefore identify operational patterns and areas for further investigation rather than establishing their underlying causes.

Outcome

Built an end-to-end cloud analytics solution that transformed nearly 1 million public-service records into an interactive operational reporting tool using Python, AWS, SQL, semantic modeling, DAX, and Power BI.


VIEW DASHBOARD →
VIEW GITHUB REPOSITORY →