Repository navigation
Expand file tree
/
Copy pathmodel.py
More file actions
150 lines (106 loc) · 3.79 KB
/
Copy pathmodel.py
File metadata and controls
150 lines (106 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
from pyspark import pipelines as dp
# Dim Passenger
@dp.view
def dim_passenger_view():
df = spark.readStream.table("silver_obt")
df = df.select("passenger_id", "passenger_name", "passenger_email", "passenger_phone")
df = df.dropDuplicates(subset=['passenger_id'])
return df
dp.create_streaming_table("dim_passenger")
dp.create_auto_cdc_flow(
target = "dim_passenger",
source = "dim_passenger_view",
keys = ["passenger_id"],
sequence_by = "passenger_id",
stored_as_scd_type = 1,
)
# Dim Driver
@dp.view
def dim_driver_view():
df = spark.readStream.table("uber.bronze.silver_obt")
df = df.select("driver_id","driver_name","driver_rating","driver_phone","driver_license")
df = df.dropDuplicates(subset=['driver_id'])
return df
dp.create_streaming_table("dim_driver")
dp.create_auto_cdc_flow(
target = "dim_driver",
source = "dim_driver_view",
keys = ["driver_id"],
sequence_by = "driver_id",
stored_as_scd_type = 1,
)
# Dim Vehicle
@dp.view
def dim_vehicle_view():
df = spark.readStream.table("uber.bronze.silver_obt")
df = df.select("vehicle_id","vehicle_make_id","vehicle_type_id","vehicle_model","vehicle_color","license_plate","vehicle_make","vehicle_type")
df = df.dropDuplicates(subset=['vehicle_id'])
return df
dp.create_streaming_table("dim_vehicle")
dp.create_auto_cdc_flow(
target = "dim_vehicle",
source = "dim_vehicle_view",
keys = ["vehicle_id"],
sequence_by = "vehicle_id",
stored_as_scd_type = 1,
)
# Dim Payment
@dp.view
def dim_payment_view():
df = spark.readStream.table("uber.bronze.silver_obt")
df = df.select("payment_method_id","payment_method","is_card","requires_auth")
df = df.dropDuplicates(subset=['payment_method_id'])
return df
dp.create_streaming_table("dim_payment")
dp.create_auto_cdc_flow(
target = "dim_payment",
source = "dim_payment_view",
keys = ["payment_method_id"],
sequence_by = "payment_method_id",
stored_as_scd_type = 1,
)
# Dim Booking
@dp.view
def dim_booking_view():
df = spark.readStream.table("uber.bronze.silver_obt")
df = df.select("ride_id","confirmation_number","dropoff_location_id","ride_status_id","dropoff_city_id","cancellation_reason_id","dropoff_address","dropoff_latitude","dropoff_longitude","booking_timestamp","dropoff_timestamp","pickup_address","pickup_latitude","pickup_longitude","pickup_location_id")
df = df.dropDuplicates(subset=['ride_id'])
return df
dp.create_streaming_table("dim_booking")
dp.create_auto_cdc_flow(
target = "dim_booking",
source = "dim_booking_view",
keys = ["ride_id"],
sequence_by = "ride_id",
stored_as_scd_type = 1,
)
# Dim Location
@dp.table
def dim_location_view():
df = spark.readStream.table("uber.bronze.silver_obt")
df = df.select("pickup_city_id","pickup_city","city_updated_at","region","state",)
df = df.dropDuplicates(subset=['pickup_city_id','city_updated_at'])
return df
dp.create_streaming_table("dim_location")
dp.create_auto_cdc_flow(
target = "dim_location",
source = "dim_location_view",
keys = ["pickup_city_id"],
sequence_by = "city_updated_at",
stored_as_scd_type = 2,
)
# Fact Table
@dp.view
def fact_view():
df = spark.readStream.table("uber.bronze.silver_obt")
df = spark.readStream.table("uber.bronze.silver_obt")
df = df.select("ride_id","pickup_city_id","payment_method_id","driver_id","passenger_id","vehicle_id","distance_miles","duration_minutes","base_fare","distance_fare","time_fare","surge_multiplier","total_fare","tip_amount","rating","base_rate","per_mile","per_minute")
return df
dp.create_streaming_table("fact")
dp.create_auto_cdc_flow(
target = "fact",
source = "fact_view",
keys = ["ride_id","pickup_city_id","payment_method_id","driver_id","passenger_id","vehicle_id"],
sequence_by = "ride_id",
stored_as_scd_type = 1,
)