42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
class SqlQueries:
|
|
songplay_table_insert = ("""
|
|
SELECT
|
|
md5(events.sessionid || events.start_time) songplay_id,
|
|
events.start_time,
|
|
events.userid,
|
|
events.level,
|
|
songs.song_id,
|
|
songs.artist_id,
|
|
events.sessionid,
|
|
events.location,
|
|
events.useragent
|
|
FROM (SELECT TIMESTAMP 'epoch' + ts/1000 * interval '1 second' AS start_time, *
|
|
FROM staging_events
|
|
WHERE page='NextSong') events
|
|
LEFT JOIN staging_songs songs
|
|
ON events.song = songs.title
|
|
AND events.artist = songs.artist_name
|
|
AND events.length = songs.duration
|
|
""")
|
|
|
|
user_table_insert = ("""
|
|
SELECT distinct userid, firstname, lastname, gender, level
|
|
FROM staging_events
|
|
WHERE page='NextSong'
|
|
""")
|
|
|
|
song_table_insert = ("""
|
|
SELECT distinct song_id, title, artist_id, year, duration
|
|
FROM staging_songs
|
|
""")
|
|
|
|
artist_table_insert = ("""
|
|
SELECT distinct artist_id, artist_name, artist_location, artist_latitude, artist_longitude
|
|
FROM staging_songs
|
|
""")
|
|
|
|
time_table_insert = ("""
|
|
SELECT start_time, extract(hour from start_time), extract(day from start_time), extract(week from start_time),
|
|
extract(month from start_time), extract(year from start_time), extract(dayofweek from start_time)
|
|
FROM songplays
|
|
""") |