{ "cells": [ { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Import necessary libraries\n", "import pandas as pd # For data manipulation using DataFrames\n", "import numpy as np # For numerical operations\n", "import matplotlib.pyplot as plt # For data visualization\n", "import os # For operating system-related tasks\n", "import joblib # For saving and loading models\n", "import hopsworks # For getting access to hopsworks\n", "\n", "\n", "\n", "# Import specific modules from scikit-learn\n", "from sklearn.preprocessing import StandardScaler, OneHotEncoder # For data preprocessing\n", "from sklearn.metrics import accuracy_score # For evaluating model accuracy" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "from feature_pipeline import tesla_fg\n", "from feature_pipeline import news_sentiment_fg" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from dotenv import load_dotenv\n", "import os\n", "\n", "load_dotenv()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Connection closed.\n", "Connected. Call `.close()` to terminate connection gracefully.\n", "\n", "Logged in to project, explore it here https://c.app.hopsworks.ai:443/p/549015\n", "Connected. Call `.close()` to terminate connection gracefully.\n" ] } ], "source": [ "api_key = os.environ.get('hopsworks_api')\n", "project = hopsworks.login(api_key_value=api_key)\n", "fs = project.get_feature_store()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "def create_stocks_feature_view(fs, version):\n", "\n", " #Loading in the feature groups\n", " tesla_fg = fs.get_feature_group('tsla_stock', version = 1)\n", " news_sentiment_fg = fs.get_feature_group('news_sentiment', version = 1)\n", "\n", " ds_query = tesla_fg.select(['date','open', 'high', 'low', 'closed', 'volume'])\\\n", " .join(news_sentiment_fg.select_except(['time', 'amp_url', 'image_url']))\n", " \n", " transformation_functions = {\n", " 'open': fs.get_transformation_function(name='min_max_scaler'),\n", " 'high': fs.get_transformation_function(name='min_max_scaler'),\n", " 'low' : fs.get_transformation_function(name='min_max_scaler'),\n", " 'closed' : fs.get_transformation_function(name='min_max_scaler'),\n", " 'volume' : fs.get_transformation_function(name='min_max_scaler'),\n", " 'sentiment' : fs.get_transformation_function(name='min_max_scaler'),\n", " }\n", "\n", " return (fs.create_tesla_feature_view(\n", " name = 'tsla_stocks_fv',\n", " query = ds_query,\n", " labels=['date']\n", " ), tesla_fg)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[]\n", "[]\n" ] }, { "ename": "RestAPIError", "evalue": "Metadata operation error: (url: https://c.app.hopsworks.ai/hopsworks-api/api/project/549015/featurestores/544840/transformationfunctions). Server response: \nHTTP code: 404, HTTP reason: Not Found, body: b'{\"errorCode\":270046,\"usrMsg\":\"HOPSFS Connector: HOPSFS\",\"errorMsg\":\"HopsFs Connector not found\"}', error code: 270046, error msg: HopsFs Connector not found, user msg: HOPSFS Connector: HOPSFS", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mRestAPIError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[29], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m----> 2\u001b[0m feature_view \u001b[38;5;241m=\u001b[39m \u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_feature_view\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtsla_stocks_fv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3\u001b[0m tesla_fg \u001b[38;5;241m=\u001b[39m fs\u001b[38;5;241m.\u001b[39mget_feature_group(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtsla_stock\u001b[39m\u001b[38;5;124m'\u001b[39m, version\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\usage.py:212\u001b[0m, in \u001b[0;36mmethod_logger..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 211\u001b[0m exception \u001b[38;5;241m=\u001b[39m e\n\u001b[1;32m--> 212\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\n\u001b[0;32m 213\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\usage.py:208\u001b[0m, in \u001b[0;36mmethod_logger..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 206\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 207\u001b[0m \u001b[38;5;66;03m# Call the original method\u001b[39;00m\n\u001b[1;32m--> 208\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\feature_store.py:1661\u001b[0m, in \u001b[0;36mFeatureStore.get_feature_view\u001b[1;34m(self, name, version)\u001b[0m\n\u001b[0;32m 1660\u001b[0m version \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mDEFAULT_VERSION\n\u001b[1;32m-> 1661\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_feature_view_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\core\\feature_view_engine.py:127\u001b[0m, in \u001b[0;36mFeatureViewEngine.get\u001b[1;34m(self, name, version)\u001b[0m\n\u001b[0;32m 126\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m version:\n\u001b[1;32m--> 127\u001b[0m fv \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_feature_view_api\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_by_name_version\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 128\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mattach_transformation_function(fv)\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\core\\feature_view_api.py:113\u001b[0m, in \u001b[0;36mFeatureViewApi.get_by_name_version\u001b[1;34m(self, name, version)\u001b[0m\n\u001b[0;32m 112\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 113\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\core\\feature_view_api.py:101\u001b[0m, in \u001b[0;36mFeatureViewApi.get_by_name_version\u001b[1;34m(self, name, version)\u001b[0m\n\u001b[0;32m 99\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 100\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m feature_view\u001b[38;5;241m.\u001b[39mFeatureView\u001b[38;5;241m.\u001b[39mfrom_response_json(\n\u001b[1;32m--> 101\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 102\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_GET\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mexpand\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mquery\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfeatures\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\n\u001b[0;32m 103\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 104\u001b[0m )\n\u001b[0;32m 105\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RestAPIError \u001b[38;5;28;01mas\u001b[39;00m e:\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\decorators.py:35\u001b[0m, in \u001b[0;36mconnected..if_connected\u001b[1;34m(inst, *args, **kwargs)\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NoHopsworksConnectionError\n\u001b[1;32m---> 35\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43minst\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\client\\base.py:179\u001b[0m, in \u001b[0;36mClient._send_request\u001b[1;34m(self, method, path_params, query_params, headers, data, stream, files)\u001b[0m\n\u001b[0;32m 178\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m response\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m/\u001b[39m\u001b[38;5;241m/\u001b[39m \u001b[38;5;241m100\u001b[39m \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[1;32m--> 179\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exceptions\u001b[38;5;241m.\u001b[39mRestAPIError(url, response)\n\u001b[0;32m 181\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m stream:\n", "\u001b[1;31mRestAPIError\u001b[0m: Metadata operation error: (url: https://c.app.hopsworks.ai/hopsworks-api/api/project/549015/featurestores/544840/featureview/tsla_stocks_fv/version/1). Server response: \nHTTP code: 404, HTTP reason: Not Found, body: b'{\"errorCode\":270181,\"usrMsg\":\"There exists no feature view with the name tsla_stocks_fv and version 1.\",\"errorMsg\":\"Feature view wasn\\'t found.\"}', error code: 270181, error msg: Feature view wasn't found., user msg: There exists no feature view with the name tsla_stocks_fv and version 1.", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[1;31mRestAPIError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[29], line 5\u001b[0m\n\u001b[0;32m 3\u001b[0m tesla_fg \u001b[38;5;241m=\u001b[39m fs\u001b[38;5;241m.\u001b[39mget_feature_group(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtsla_stock\u001b[39m\u001b[38;5;124m'\u001b[39m, version\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[1;32m----> 5\u001b[0m feature_view, trans_fg \u001b[38;5;241m=\u001b[39m \u001b[43mcreate_stocks_feature_view\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n", "Cell \u001b[1;32mIn[28], line 11\u001b[0m, in \u001b[0;36mcreate_stocks_feature_view\u001b[1;34m(fs, version)\u001b[0m\n\u001b[0;32m 5\u001b[0m news_sentiment_fg \u001b[38;5;241m=\u001b[39m fs\u001b[38;5;241m.\u001b[39mget_feature_group(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnews_sentiment\u001b[39m\u001b[38;5;124m'\u001b[39m, version \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m 7\u001b[0m ds_query \u001b[38;5;241m=\u001b[39m tesla_fg\u001b[38;5;241m.\u001b[39mselect([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdate\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mopen\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhigh\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlow\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mclosed\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mvolume\u001b[39m\u001b[38;5;124m'\u001b[39m])\\\n\u001b[0;32m 8\u001b[0m \u001b[38;5;241m.\u001b[39mjoin(news_sentiment_fg\u001b[38;5;241m.\u001b[39mselect_except([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtime\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mamp_url\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_url\u001b[39m\u001b[38;5;124m'\u001b[39m]))\n\u001b[0;32m 10\u001b[0m transformation_functions \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m---> 11\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mopen\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[43mfs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_transformation_function\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mmin_max_scaler\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m,\n\u001b[0;32m 12\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhigh\u001b[39m\u001b[38;5;124m'\u001b[39m: fs\u001b[38;5;241m.\u001b[39mget_transformation_function(name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmin_max_scaler\u001b[39m\u001b[38;5;124m'\u001b[39m),\n\u001b[0;32m 13\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlow\u001b[39m\u001b[38;5;124m'\u001b[39m : fs\u001b[38;5;241m.\u001b[39mget_transformation_function(name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmin_max_scaler\u001b[39m\u001b[38;5;124m'\u001b[39m),\n\u001b[0;32m 14\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mclosed\u001b[39m\u001b[38;5;124m'\u001b[39m : fs\u001b[38;5;241m.\u001b[39mget_transformation_function(name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmin_max_scaler\u001b[39m\u001b[38;5;124m'\u001b[39m),\n\u001b[0;32m 15\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mvolume\u001b[39m\u001b[38;5;124m'\u001b[39m : fs\u001b[38;5;241m.\u001b[39mget_transformation_function(name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmin_max_scaler\u001b[39m\u001b[38;5;124m'\u001b[39m),\n\u001b[0;32m 16\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msentiment\u001b[39m\u001b[38;5;124m'\u001b[39m : fs\u001b[38;5;241m.\u001b[39mget_transformation_function(name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmin_max_scaler\u001b[39m\u001b[38;5;124m'\u001b[39m),\n\u001b[0;32m 17\u001b[0m }\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (fs\u001b[38;5;241m.\u001b[39mcreate_tesla_feature_view(\n\u001b[0;32m 20\u001b[0m name \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtsla_stocks_fv\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 21\u001b[0m query \u001b[38;5;241m=\u001b[39m ds_query,\n\u001b[0;32m 22\u001b[0m labels\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdate\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m 23\u001b[0m ), tesla_fg)\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\usage.py:212\u001b[0m, in \u001b[0;36mmethod_logger..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 210\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 211\u001b[0m exception \u001b[38;5;241m=\u001b[39m e\n\u001b[1;32m--> 212\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\n\u001b[0;32m 213\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 214\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\usage.py:208\u001b[0m, in \u001b[0;36mmethod_logger..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 205\u001b[0m exception \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 206\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 207\u001b[0m \u001b[38;5;66;03m# Call the original method\u001b[39;00m\n\u001b[1;32m--> 208\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n\u001b[0;32m 210\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\feature_store.py:1404\u001b[0m, in \u001b[0;36mFeatureStore.get_transformation_function\u001b[1;34m(self, name, version)\u001b[0m\n\u001b[0;32m 1304\u001b[0m \u001b[38;5;129m@usage\u001b[39m\u001b[38;5;241m.\u001b[39mmethod_logger\n\u001b[0;32m 1305\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_transformation_function\u001b[39m(\n\u001b[0;32m 1306\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1307\u001b[0m name: \u001b[38;5;28mstr\u001b[39m,\n\u001b[0;32m 1308\u001b[0m version: Optional[\u001b[38;5;28mint\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 1309\u001b[0m ):\n\u001b[0;32m 1310\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Get transformation function metadata object.\u001b[39;00m\n\u001b[0;32m 1311\u001b[0m \n\u001b[0;32m 1312\u001b[0m \u001b[38;5;124;03m !!! example \"Get transformation function by name. This will default to version 1\"\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1402\u001b[0m \u001b[38;5;124;03m `TransformationFunction`: The TransformationFunction metadata object.\u001b[39;00m\n\u001b[0;32m 1403\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 1404\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transformation_function_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_transformation_fn\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\core\\transformation_function_engine.py:65\u001b[0m, in \u001b[0;36mTransformationFunctionEngine.get_transformation_fn\u001b[1;34m(self, name, version)\u001b[0m\n\u001b[0;32m 63\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_transformation_fn\u001b[39m(\u001b[38;5;28mself\u001b[39m, name, version\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m 64\u001b[0m transformation_fn_instances \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m---> 65\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_transformation_function_api\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_transformation_fn\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mversion\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 66\u001b[0m )\n\u001b[0;32m 67\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m transformation_fn_instances[\u001b[38;5;241m0\u001b[39m]\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\core\\transformation_function_api.py:72\u001b[0m, in \u001b[0;36mTransformationFunctionApi.get_transformation_fn\u001b[1;34m(self, name, version)\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m version:\n\u001b[0;32m 70\u001b[0m query_params[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mversion\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m version\n\u001b[0;32m 71\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m transformation_function\u001b[38;5;241m.\u001b[39mTransformationFunction\u001b[38;5;241m.\u001b[39mfrom_response_json(\n\u001b[1;32m---> 72\u001b[0m \u001b[43m_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_request\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mGET\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpath_params\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquery_params\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 73\u001b[0m )\n\u001b[0;32m 74\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 75\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m transformation_function\u001b[38;5;241m.\u001b[39mTransformationFunction\u001b[38;5;241m.\u001b[39mfrom_response_json(\n\u001b[0;32m 76\u001b[0m _client\u001b[38;5;241m.\u001b[39m_send_request(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mGET\u001b[39m\u001b[38;5;124m\"\u001b[39m, path_params)\n\u001b[0;32m 77\u001b[0m )\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\decorators.py:35\u001b[0m, in \u001b[0;36mconnected..if_connected\u001b[1;34m(inst, *args, **kwargs)\u001b[0m\n\u001b[0;32m 33\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m inst\u001b[38;5;241m.\u001b[39m_connected:\n\u001b[0;32m 34\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NoHopsworksConnectionError\n\u001b[1;32m---> 35\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43minst\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[1;32mc:\\Users\\frede\\OneDrive\\Dokumenter\\Master\\MLops\\MLops_mod\\.conda\\Lib\\site-packages\\hsfs\\client\\base.py:179\u001b[0m, in \u001b[0;36mClient._send_request\u001b[1;34m(self, method, path_params, query_params, headers, data, stream, files)\u001b[0m\n\u001b[0;32m 176\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_session\u001b[38;5;241m.\u001b[39msend(prepped, verify\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_verify, stream\u001b[38;5;241m=\u001b[39mstream)\n\u001b[0;32m 178\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m response\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m/\u001b[39m\u001b[38;5;241m/\u001b[39m \u001b[38;5;241m100\u001b[39m \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[1;32m--> 179\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exceptions\u001b[38;5;241m.\u001b[39mRestAPIError(url, response)\n\u001b[0;32m 181\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m stream:\n\u001b[0;32m 182\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", "\u001b[1;31mRestAPIError\u001b[0m: Metadata operation error: (url: https://c.app.hopsworks.ai/hopsworks-api/api/project/549015/featurestores/544840/transformationfunctions). Server response: \nHTTP code: 404, HTTP reason: Not Found, body: b'{\"errorCode\":270046,\"usrMsg\":\"HOPSFS Connector: HOPSFS\",\"errorMsg\":\"HopsFs Connector not found\"}', error code: 270046, error msg: HopsFs Connector not found, user msg: HOPSFS Connector: HOPSFS" ] } ], "source": [ "try:\n", " feature_view = fs.get_feature_view(\"tsla_stocks_fv\", version=1)\n", " tesla_fg = fs.get_feature_group('tsla_stock', version=1)\n", "except:\n", " feature_view, trans_fg = create_stocks_feature_view(fs, 1)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" } }, "nbformat": 4, "nbformat_minor": 2 }