Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
e1e210d
Broken state
kevjumba Aug 5, 2022
011d1e0
working state
kevjumba Aug 10, 2022
a6a2fce
Fix the lint issues
kevjumba Aug 10, 2022
57b63bb
Semi working state
kevjumba Aug 10, 2022
ae7ed8a
Fix
kevjumba Aug 10, 2022
421645b
Fremove print
kevjumba Aug 10, 2022
07fece5
Fix lint
kevjumba Aug 11, 2022
4062031
Run build-sphinx
kevjumba Aug 11, 2022
cb39329
Add tutorials
kevjumba Aug 11, 2022
554ca1a
Fix
kevjumba Aug 11, 2022
4a969e7
Fix?
kevjumba Aug 11, 2022
116320a
Fix lint
kevjumba Aug 11, 2022
c0b16ef
Fix
kevjumba Aug 11, 2022
44d09d0
Fix lint
kevjumba Aug 12, 2022
b6f0a79
Begin configuring tests
adchia Aug 15, 2022
2b2ff40
Fix
kevjumba Aug 15, 2022
4616366
Working version
kevjumba Aug 16, 2022
c7d9852
Fix
kevjumba Aug 17, 2022
d2e290b
Fix
kevjumba Aug 17, 2022
a726a9a
Fix
kevjumba Aug 17, 2022
32992e3
Fix lint
kevjumba Aug 17, 2022
ebb934b
Fix lint
kevjumba Aug 17, 2022
e456acb
Fix
kevjumba Aug 17, 2022
45f479f
Fix lint
kevjumba Aug 17, 2022
4b8c4a2
Fix
kevjumba Aug 17, 2022
b1bf602
Fix
kevjumba Aug 17, 2022
4586f00
Fix azure
kevjumba Aug 17, 2022
3b88c0b
Fix
kevjumba Aug 17, 2022
9ae8ee3
Fix
kevjumba Aug 17, 2022
1b12e4a
Fix lint and address issues
kevjumba Aug 18, 2022
0ca5048
Fix integration tests
kevjumba Aug 18, 2022
883f314
Fix
kevjumba Aug 18, 2022
ccf8716
Fix lint and address issues
kevjumba Aug 18, 2022
f05288e
Fix
kevjumba Aug 18, 2022
ee30e73
Fix
kevjumba Aug 18, 2022
ab17db9
Fix
kevjumba Aug 18, 2022
be162f5
Revert
kevjumba Aug 18, 2022
f5aa476
Fix
kevjumba Aug 18, 2022
4423dfa
Fix
kevjumba Aug 18, 2022
5806507
Fix
kevjumba Aug 18, 2022
7a4d055
Fix lint
kevjumba Aug 19, 2022
78b74b1
Fix
kevjumba Aug 19, 2022
a9e8119
Fix lint
kevjumba Aug 19, 2022
1341e3e
Fix pyarrow
kevjumba Aug 19, 2022
3d42093
Fix lint
kevjumba Aug 19, 2022
1c591f0
add requirements files
adchia Aug 19, 2022
b4da607
fix name of docs
adchia Aug 19, 2022
c3a0423
fix offline store readme
adchia Aug 19, 2022
576b57e
fix offline store readme
adchia Aug 19, 2022
69940ac
fix
adchia Aug 19, 2022
516ff76
fix
adchia Aug 19, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix lint
Signed-off-by: Kevin Zhang <kzhang@tecton.ai>
  • Loading branch information
kevjumba committed Aug 19, 2022
commit 07fece53e3ba2bd7088d76b42342065c9de1aacb
1 change: 0 additions & 1 deletion sdk/python/feast/infra/contrib/azure_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
from feast.registry import BaseRegistry
from feast.repo_config import RepoConfig
from feast.saved_dataset import SavedDataset
from feast.usage import RatioSampler, log_exceptions_and_usage, set_usage_attribute
from feast.utils import (
_convert_arrow_to_proto,
_get_column_names,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,41 +1,37 @@
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.

from dataclasses import asdict, dataclass
from datetime import datetime, timedelta
from datetime import datetime
from typing import Any, Dict, List, Optional, Set, Tuple, Union

import numpy as np
import pandas
import pyarrow
import sqlalchemy
from jinja2 import BaseLoader, Environment
from pydantic.types import StrictStr
from pydantic.typing import Literal
from sqlalchemy import create_engine
from sqlalchemy.engine import Engine
from sqlalchemy.orm import Session, sessionmaker
from feast.errors import InvalidEntityType
from sqlalchemy.orm import sessionmaker

from feast import FileSource, errors
from feast.data_source import DataSource
from feast.errors import InvalidEntityType
from feast.feature_view import FeatureView
from feast.infra.offline_stores import offline_utils
from feast.infra.offline_stores.file_source import SavedDatasetFileStorage
from feast.infra.offline_stores.offline_store import (
OfflineStore,
RetrievalJob,
RetrievalMetadata,
)
from feast.infra.offline_stores.offline_store import OfflineStore, RetrievalMetadata
from feast.infra.offline_stores.offline_utils import (
DEFAULT_ENTITY_DF_EVENT_TIMESTAMP_COL,
build_point_in_time_query,
get_feature_view_query_context,
)
from feast.infra.provider import RetrievalJob
from feast.on_demand_feature_view import OnDemandFeatureView
from feast.registry import BaseRegistry
from feast.repo_config import FeastBaseModel, RepoConfig
from feast.saved_dataset import SavedDatasetStorage
from feast.infra.offline_stores.offline_utils import build_point_in_time_query, get_feature_view_query_context

EntitySchema = Dict[str, np.dtype]


Expand All @@ -50,7 +46,6 @@ class MsSqlServerOfflineStoreConfig(FeastBaseModel):
format: SQLAlchemy connection string, e.g. mssql+pyodbc://sa:yourStrong(!)Password@localhost:1433/feast_test?driver=ODBC+Driver+17+for+SQL+Server"""



def make_engine(config: MsSqlServerOfflineStoreConfig) -> Engine:
return create_engine(config.connection_string)

Expand Down Expand Up @@ -175,7 +170,11 @@ def get_historical_features(

# Build a query context containing all information required to template the SQL query
query_context = get_feature_view_query_context(
feature_refs, feature_views, registry, project, entity_df_timestamp_range=entity_df_event_timestamp_range,
feature_refs,
feature_views,
registry,
project,
entity_df_timestamp_range=entity_df_event_timestamp_range,
)

# TODO: Infer min_timestamp and max_timestamp from entity_df
Expand All @@ -187,7 +186,6 @@ def get_historical_features(
entity_df_columns=table_schema.keys(),
full_feature_names=full_feature_names,
query_template=MULTIPLE_FEATURE_VIEW_POINT_IN_TIME_JOIN,

)
query = query.replace("`", "")

Expand All @@ -200,6 +198,7 @@ def get_historical_features(
)
return job


def _assert_expected_columns_in_dataframe(
join_keys: Set[str], entity_df_event_timestamp_col: str, entity_df: pandas.DataFrame
):
Expand Down Expand Up @@ -336,7 +335,7 @@ def _upload_entity_df_into_sqlserver_and_get_entity_schema(

if type(entity_df) is str:
# TODO: This should be a temporary table, right?
session.execute(f"SELECT * INTO {table_id} FROM ({entity_df}) t")
session.execute(f"SELECT * INTO {table_id} FROM ({entity_df}) t") # type: ignore

session.commit()

Expand Down Expand Up @@ -365,10 +364,11 @@ def _upload_entity_df_into_sqlserver_and_get_entity_schema(

return entity_schema


def _get_entity_df_event_timestamp_range(
entity_df: Union[pandas.DataFrame, str],
entity_df_event_timestamp_col: str,
engine: Session,
engine: Engine,
) -> Tuple[datetime, datetime]:
if isinstance(entity_df, pandas.DataFrame):
entity_df_event_timestamp = entity_df.loc[
Expand Down Expand Up @@ -398,10 +398,11 @@ def _get_entity_df_event_timestamp_range(
entity_df_event_timestamp.max().to_pydatetime(),
)
else:
raise InvalidEntityType(type(entity_df))
raise InvalidEntityType(type(entity_df))

return entity_df_event_timestamp_range


# TODO: Optimizations
# * Use NEWID() instead of ROW_NUMBER(), or join on entity columns directly
# * Precompute ROW_NUMBER() so that it doesn't have to be recomputed for every query on entity_dataframe
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ def get_table_column_names_and_types(
config.offline_store.connection_string
)
name_type_pairs = []
if (len(self.table_ref.split(".")) == 2):
if len(self.table_ref.split(".")) == 2:
database, table_name = self.table_ref.split(".")
columns_query = f"""
SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
import os
import uuid
from typing import Dict, List
from venv import create
from typing import Dict

import pandas as pd
from pyspark import SparkConf
from pyspark.sql import SparkSession

from feast.data_source import DataSource
from feast.infra.offline_stores.contrib.mssql_offline_store.mssql import (
Expand Down
1 change: 0 additions & 1 deletion sdk/python/feast/infra/provider.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from abc import ABC, abstractmethod
from collections import defaultdict
from datetime import datetime
from pathlib import Path
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def __init__(self, registry_config: RegistryConfig, repo_path: Path):
import logging

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobClient, BlobServiceClient
from azure.storage.blob import BlobServiceClient
except ImportError as e:
from feast.errors import FeastExtrasDependencyImportError

Expand Down Expand Up @@ -59,9 +59,9 @@ def __init__(self, registry_config: RegistryConfig, repo_path: Path):
self.blob = client.get_blob_client(
container=self._container, blob=self._path
)
except:
except Exception as e:
print(
"Could not connect to blob. Check the following\nIs the URL specified correctly?\nIs you IAM role set to Storage Blob Data Contributor?\n"
f"Could not connect to blob. Check the following\nIs the URL specified correctly?\nIs you IAM role set to Storage Blob Data Contributor? \n Errored out with exception {e}"
)

return
Expand Down Expand Up @@ -94,5 +94,5 @@ def _write_registry(self, registry_proto: RegistryProto):
file_obj = TemporaryFile()
file_obj.write(registry_proto.SerializeToString())
file_obj.seek(0)
self.blob.upload_blob(file_obj, overwrite=True)
self.blob.upload_blob(file_obj, overwrite=True) # type: ignore
return
2 changes: 1 addition & 1 deletion sdk/python/feast/type_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,7 @@ def bq_to_feast_value_type(bq_type_as_str: str) -> ValueType:

return value_type


def mssql_to_feast_value_type(mssql_type_as_str: str) -> ValueType:
type_map = {
"bigint": ValueType.FLOAT,
Expand All @@ -557,7 +558,6 @@ def mssql_to_feast_value_type(mssql_type_as_str: str) -> ValueType:
return type_map[mssql_type_as_str.lower()]



def redshift_to_feast_value_type(redshift_type_as_str: str) -> ValueType:
# Type names from https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html
type_map = {
Expand Down
1 change: 0 additions & 1 deletion sdk/python/feast/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
# limitations under the License.
from abc import ABC, abstractmethod
from enum import Enum
from multiprocessing.sharedctypes import Value
from typing import Dict, Union

from feast.value_type import ValueType
Expand Down