From 47063c449f7f4f0189b5ac16d8dec8a62c71d5f6 Mon Sep 17 00:00:00 2001 From: Stefan Krawczyk Date: Mon, 24 Jun 2024 17:01:16 -0700 Subject: [PATCH] Adds notebook -- proving it works --- .../using_types/notebook.ipynb | 175 ++++++++++++++++++ .../using_types/simple_etl.png | Bin 30150 -> 30787 bytes .../{def simple_etl.py => simple_etl.py} | 0 3 files changed, 175 insertions(+) create mode 100644 examples/materialization/using_types/notebook.ipynb rename examples/materialization/using_types/{def simple_etl.py => simple_etl.py} (100%) diff --git a/examples/materialization/using_types/notebook.ipynb b/examples/materialization/using_types/notebook.ipynb new file mode 100644 index 000000000..e46ba15fd --- /dev/null +++ b/examples/materialization/using_types/notebook.ipynb @@ -0,0 +1,175 @@ +{ + "cells": [ + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2024-06-25T00:00:13.662458Z", + "start_time": "2024-06-25T00:00:06.982077Z" + } + }, + "source": "%load_ext hamilton.plugins.jupyter_magic\n", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/stefankrawczyk/.pyenv/versions/knowledge_retrieval-py39/lib/python3.9/site-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + } + ], + "execution_count": 1 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-25T00:00:25.003646Z", + "start_time": "2024-06-25T00:00:24.322577Z" + } + }, + "cell_type": "code", + "source": [ + "%%cell_to_module simple_etl --display\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "\n", + "from hamilton.htypes import DataLoaderMetadata, DataSaverMetadata\n", + "\n", + "\n", + "def raw_data() -> tuple[pd.DataFrame, DataLoaderMetadata]:\n", + " data = datasets.load_digits()\n", + " df = pd.DataFrame(data.data, columns=[f\"feature_{i}\" for i in range(data.data.shape[1])])\n", + " return df, DataLoaderMetadata.from_dataframe(df)\n", + "\n", + "\n", + "def transformed_data(raw_data: pd.DataFrame) -> pd.DataFrame:\n", + " return raw_data\n", + "\n", + "\n", + "def saved_data(transformed_data: pd.DataFrame, filepath: str) -> DataSaverMetadata:\n", + " transformed_data.to_csv(filepath)\n", + " return DataSaverMetadata.from_file_and_dataframe(filepath, transformed_data)\n" + ], + "id": "efd6c1b2417bb9cf", + "outputs": [ + { + "data": { + "image/svg+xml": "\n\n\n\n\n\n\n\ncluster__legend\n\nLegend\n\n\n\nraw_data\n\nraw_data\nDataFrame\n\n\n\ntransformed_data\n\ntransformed_data\nDataFrame\n\n\n\nraw_data->transformed_data\n\n\n\n\n\nsaved_data\n\n\nsaved_data\nsaved_data\n\n\n\ntransformed_data->saved_data\n\n\n\n\n\n_saved_data_inputs\n\nfilepath\nstr\n\n\n\n_saved_data_inputs->saved_data\n\n\n\n\n\ninput\n\ninput\n\n\n\nfunction\n\nfunction\n\n\n\nmaterializer\n\n\nmaterializer\n\n\n\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 2 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-25T00:00:37.889540Z", + "start_time": "2024-06-25T00:00:35.994131Z" + } + }, + "cell_type": "code", + "source": [ + "from hamilton_sdk import adapters\n", + "\n", + "from hamilton import driver\n", + "\n", + "tracker = adapters.HamiltonTracker(\n", + " project_id=7, # modify this as needed\n", + " username=\"elijah@dagworks.io\",\n", + " dag_name=\"my_version_of_the_dag\",\n", + " tags={\"environment\": \"DEV\", \"team\": \"MY_TEAM\", \"version\": \"X\"},\n", + ")\n", + "dr = driver.Builder().with_config({}).with_modules(simple_etl).with_adapters(tracker).build()\n", + "dr.display_all_functions()" + ], + "id": "e9252f2a09228330", + "outputs": [ + { + "data": { + "image/svg+xml": "\n\n\n\n\n\n\n\ncluster__legend\n\nLegend\n\n\n\nraw_data\n\nraw_data\nDataFrame\n\n\n\ntransformed_data\n\ntransformed_data\nDataFrame\n\n\n\nraw_data->transformed_data\n\n\n\n\n\nsaved_data\n\n\nsaved_data\nsaved_data\n\n\n\ntransformed_data->saved_data\n\n\n\n\n\n_saved_data_inputs\n\nfilepath\nstr\n\n\n\n_saved_data_inputs->saved_data\n\n\n\n\n\ninput\n\ninput\n\n\n\nfunction\n\nfunction\n\n\n\nmaterializer\n\n\nmaterializer\n\n\n\n", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 3 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-06-25T00:00:53.746596Z", + "start_time": "2024-06-25T00:00:52.320439Z" + } + }, + "cell_type": "code", + "source": "dr.execute([\"saved_data\"], inputs={\"filepath\": \"data.csv\"})", + "id": "86c0d0f7da9a472b", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Capturing execution run. Results can be found at http://localhost:8241/dashboard/project/7/runs/25\n", + "\n", + "\n", + "Captured execution run. Results can be found at http://localhost:8241/dashboard/project/7/runs/25\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "{'saved_data': }" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 4 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "e108601ca3a88aab" + } + ], + "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": 5 +} diff --git a/examples/materialization/using_types/simple_etl.png b/examples/materialization/using_types/simple_etl.png index 3c84b2f9f29ab17749332dcf8ff339028ae3da1a..e83cef032149b7b68ea806117ec6efc102e3dc90 100644 GIT binary patch literal 30787 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 EA8{A5GXMYp literal 30150 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 DdTXfi diff --git a/examples/materialization/using_types/def simple_etl.py b/examples/materialization/using_types/simple_etl.py similarity index 100% rename from examples/materialization/using_types/def simple_etl.py rename to examples/materialization/using_types/simple_etl.py