From ec02f1b742e6697847627eb1dd4a47530f3e22e3 Mon Sep 17 00:00:00 2001 From: Jeremy Ary Date: Thu, 14 Dec 2023 12:26:57 -0600 Subject: [PATCH] testing PR actions --- feature_services.py | 2 +- features.py | 22 +++++++- initial_data_preview.parquet | Bin 0 -> 58757 bytes workshop-notebook.ipynb | 103 +++++++++++++++++++++++++++++++++++ 4 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 initial_data_preview.parquet create mode 100644 workshop-notebook.ipynb diff --git a/feature_services.py b/feature_services.py index 401b0c9..d5eb2bc 100644 --- a/feature_services.py +++ b/feature_services.py @@ -9,5 +9,5 @@ ) feature_service_2 = FeatureService( - name="model_v2", features=[driver_hourly_stats_view], owner="jary@redhat.com", + name="model_v2", features=[driver_hourly_stats_view, driver_daily_miles_view], owner="jary@redhat.com", ) diff --git a/features.py b/features.py index e23e371..5725f40 100644 --- a/features.py +++ b/features.py @@ -1,10 +1,15 @@ from datetime import timedelta +import pandas as pd from feast import ( FeatureView, Field, ) -from feast.types import Float32 +from feast.types import ( + Float32, + Float64, + UnixTimestamp +) from data_sources import * from entities import * @@ -23,3 +28,18 @@ tags={"production": "True"}, owner="test2@gmail.com", ) + +driver_daily_miles_view = FeatureView( + name="driver_daily_miles", + description="Daily miles", + entities=[driver], + ttl=timedelta(seconds=8640000000), + schema=[ + Field(name="day", dtype=UnixTimestamp), + Field(name="miles_driven", dtype=Float64), + ], + online=True, + source=driver_stats, + tags={"production": "True"}, + owner="jary@redhat.com", +) diff --git a/initial_data_preview.parquet b/initial_data_preview.parquet new file mode 100644 index 0000000000000000000000000000000000000000..bfc77ffa81f65a189e321cb76576cf1b13fbf416 GIT binary patch literal 58757 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 literal 0 HcmV?d00001 diff --git a/workshop-notebook.ipynb b/workshop-notebook.ipynb new file mode 100644 index 0000000..0278b32 --- /dev/null +++ b/workshop-notebook.ipynb @@ -0,0 +1,103 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-12-14T18:18:46.808286660Z", + "start_time": "2023-12-14T18:18:46.762462944Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": " event_timestamp driver_id conv_rate acc_rate \\\n0 2022-02-27 15:00:00+00:00 1005 0.142214 0.408987 \n1 2022-02-27 16:00:00+00:00 1005 0.349267 0.734021 \n2 2022-02-27 17:00:00+00:00 1005 0.358805 0.366804 \n3 2022-02-27 18:00:00+00:00 1005 0.611828 0.773883 \n4 2022-02-27 19:00:00+00:00 1005 0.156503 0.966413 \n\n created day miles_driven daily_miles_driven \n0 2022-03-14 15:21:25.842 2022-02-27 24.817618 150.587752 \n1 2022-03-14 15:21:25.842 2022-02-27 8.293352 150.587752 \n2 2022-03-14 15:21:25.842 2022-02-27 8.316672 150.587752 \n3 2022-03-14 15:21:25.842 2022-02-27 10.566458 150.587752 \n4 2022-03-14 15:21:25.842 2022-02-27 15.664332 150.587752 ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
event_timestampdriver_idconv_rateacc_ratecreateddaymiles_drivendaily_miles_driven
02022-02-27 15:00:00+00:0010050.1422140.4089872022-03-14 15:21:25.8422022-02-2724.817618150.587752
12022-02-27 16:00:00+00:0010050.3492670.7340212022-03-14 15:21:25.8422022-02-278.293352150.587752
22022-02-27 17:00:00+00:0010050.3588050.3668042022-03-14 15:21:25.8422022-02-278.316672150.587752
32022-02-27 18:00:00+00:0010050.6118280.7738832022-03-14 15:21:25.8422022-02-2710.566458150.587752
42022-02-27 19:00:00+00:0010050.1565030.9664132022-03-14 15:21:25.8422022-02-2715.664332150.587752
\n
" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_parquet('initial_data_preview.parquet')\n", + "\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 1807 entries, 0 to 1806\n", + "Data columns (total 8 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 event_timestamp 1807 non-null datetime64[ns, UTC]\n", + " 1 driver_id 1807 non-null int64 \n", + " 2 conv_rate 1807 non-null float32 \n", + " 3 acc_rate 1807 non-null float32 \n", + " 4 created 1807 non-null datetime64[ns] \n", + " 5 day 1807 non-null object \n", + " 6 miles_driven 1807 non-null float64 \n", + " 7 daily_miles_driven 1807 non-null float64 \n", + "dtypes: datetime64[ns, UTC](1), datetime64[ns](1), float32(2), float64(2), int64(1), object(1)\n", + "memory usage: 112.9+ KB\n" + ] + } + ], + "source": [ + "df.info()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-14T18:18:46.808952912Z", + "start_time": "2023-12-14T18:18:46.808516534Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-12-14T18:18:46.809050800Z", + "start_time": "2023-12-14T18:18:46.808761856Z" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}