chefsfeed presentation to snowplow meetup san francisco, oct 2015
TRANSCRIPT
What is ChefsFeed?
Snowplow is the Solution!
What’s the Problem?
For Real?
What is ChefsFe
ed?
CHEFS ARE THE NEW ROCK STARS FOOD IS THE
NEW ROCK & ROLL.
TRUST THE HAND THAT FEEDS YOU.
VIDEO PRE-ROLL ONLINE ADS EMAIL & PUSH
MOBILE NATIVE INDUSTRY SOCIAL BRAND SOCIAL
“URBAN”“MILLENIALS”“MOBILE”“INFLUENCERS”“QUALITY”
What’s the Problem?
Lots of Sources!
Marketing Data• Marketing systems are focused on
conversions• App installed• User registration• Purchase
• Why?• Attribution!• In other words, they want to get credit!
Focus on Conversions
✔ $✔Install
Registration
Purchase
Wrong!
✔ $✔Install
Registration
Purchase
User Behavior
✔ $✔Fried Chicken Ad
WTF Video
Pizza Restaurant Search
Lots of Data!
✔ $✔Fried Chicken Ad
WTF Video
Pizza Restaurant Search
Billions of events
Millions of events
Snowplow is the
Solution
Lots of Data!
✔ $✔Fried Chicken Ad
WTF Video
Pizza Restaurant Search
Billions of events
Use Case
Snowplow Event Data
• Consistent conversion event types between systems• App.start (structured event)• App.resume (structured event)• Save.dish (com_chefsfeed_dish_saved_1) • Reserve.OT
(com_chefsfeed_open_table_booked_2)• A whole lot of screen.view in between!• Not captured in Fiksu
User Event Stream
✔ $✔source
screen.view
screen.view
Billions of events
App.start Save.dish Reserve.OT
Mobile_Events Table
selectfk.source_name,
se_action,regexp_substr(regexp_substr(unstruct_event, '/[^/]+/jsonschema[^{]+\\{[^{]+$'), '[^/]+') as unstruct_event_name,app_id,
rank() OVER (partition by apple_idfa, ORDER BY collector_tstamp)from atomic.events ae
left join atomic.com_snowplowanalytics_snowplow_mobile_context_1 mc on ae.event_id=mc.root_id
left join atomic.com_snowplowanalytics_snowplow_screen_view_1 as sv on ae.event_id=sv.root_id
left join data.fiksu fk on fk.ios_advertising_identifier = mc.apple_idfa
Mobile Events by Source
Tips/Tricks• Persistent Derived Tables are the bomb!• Unstructured events can be tricky to set up
correctly• Miscoding on iOS, shredding fails• json_extract_path_text(unstruct_event,
'data', 'data', 'filter_string') digs out an attribute
• Redshift Python UDF• Implemented Haversine function to geocode
users
For Real!