// Power Query M Code for Trip Data Transformation
let
Source = Excel.Workbook(File.Contents("Uber Trip Details.xlsx"), null, true),
TripDetails = Source{[Item="Trip Details",Kind="Sheet"]}[Data],
// Promote headers and set data types
PromotedHeaders = Table.PromoteHeaders(TripDetails, [PromoteAllScalars=true]),
ChangedTypes = Table.TransformColumnTypes(PromotedHeaders,{
{"Trip ID", Int64.Type},
{"Pickup Time", type datetime},
{"Drop Off Time", type datetime},
{"passenger_count", Int64.Type},
{"trip_distance", type number},
{"PULocationID", Int64.Type},
{"DOLocationID", Int64.Type},
{"fare_amount", type number},
{"Surge Fee", type number},
{"Vehicle", type text},
{"Payment_type", type text}
}),
// Add calculated columns
AddedTripDuration = Table.AddColumn(ChangedTypes, "Trip Duration (min)",
each Duration.TotalMinutes([Drop Off Time] - [Pickup Time]), type number),
// Calculate total fare
AddedTotalFare = Table.AddColumn(AddedTripDuration, "Total Fare",
each [fare_amount] + [Surge Fee], type number),
// Add time-based categorization
AddedTimePeriod = Table.AddColumn(AddedTotalFare, "Time Period",
each if Time.Hour([Pickup Time]) >= 6 and Time.Hour([Pickup Time]) < 12 then "Morning"
else if Time.Hour([Pickup Time]) >= 12 and Time.Hour([Pickup Time]) < 18 then "Afternoon"
else if Time.Hour([Pickup Time]) >= 18 and Time.Hour([Pickup Time]) < 22 then "Evening"
else "Night", type text),
// Add day/night categorization
AddedDayNight = Table.AddColumn(AddedTimePeriod, "Day or Night",
each if Time.Hour([Pickup Time]) >= 6 and Time.Hour([Pickup Time]) < 20 then "Day" else "Night",
type text),
// Add day of week name
AddedDayName = Table.AddColumn(AddedDayNight, "Day Name",
each Date.DayOfWeekName([Pickup Time]), type text),
// Remove any null values in critical columns
RemovedNulls = Table.SelectRows(AddedDayName,
each [Trip ID] <> null and [Pickup Time] <> null and [Drop Off Time] <> null)
in
RemovedNulls