|
739 | 739 | } |
740 | 740 | ], |
741 | 741 | "source": [ |
742 | | - "!rm -rf $BASE_DIR/feature_repo\n", |
743 | | - "!cd $BASE_DIR && feast init feature_repo" |
| 742 | + "!rm -rf $BASE_DIR/feast\n", |
| 743 | + "!cd $BASE_DIR && feast init feast" |
744 | 744 | ] |
745 | 745 | }, |
746 | 746 | { |
|
758 | 758 | "metadata": {}, |
759 | 759 | "outputs": [], |
760 | 760 | "source": [ |
761 | | - "feature_repo_path = os.path.join(BASE_DIR, \"feature_repo\")\n", |
762 | | - "if os.path.exists(f\"{feature_repo_path}/example.py\"):\n", |
763 | | - " os.remove(f\"{feature_repo_path}/example.py\")\n", |
| 761 | + "feature_repo_path = os.path.join(BASE_DIR, \"feast/feature_repo\")\n", |
| 762 | + "if os.path.exists(f\"{feature_repo_path}/example_repo.py\"):\n", |
| 763 | + " os.remove(f\"{feature_repo_path}/example_repo.py\")\n", |
764 | 764 | "if os.path.exists(f\"{feature_repo_path}/data/driver_stats.parquet\"):\n", |
765 | 765 | " os.remove(f\"{feature_repo_path}/data/driver_stats.parquet\")" |
766 | 766 | ] |
|
1157 | 1157 | "outputs": [], |
1158 | 1158 | "source": [ |
1159 | 1159 | "user_features.to_parquet(\n", |
1160 | | - " os.path.join(BASE_DIR, \"feature_repo/data\", \"user_features.parquet\")\n", |
| 1160 | + " os.path.join(feature_repo_path, \"data\", \"user_features.parquet\")\n", |
1161 | 1161 | ")" |
1162 | 1162 | ] |
1163 | 1163 | }, |
|
1313 | 1313 | "source": [ |
1314 | 1314 | "# save to disk\n", |
1315 | 1315 | "item_features.to_parquet(\n", |
1316 | | - " os.path.join(BASE_DIR, \"feature_repo/data\", \"item_features.parquet\")\n", |
| 1316 | + " os.path.join(feature_repo_path, \"data\", \"item_features.parquet\")\n", |
1317 | 1317 | ")" |
1318 | 1318 | ] |
1319 | 1319 | }, |
|
1604 | 1604 | "metadata": {}, |
1605 | 1605 | "outputs": [], |
1606 | 1606 | "source": [ |
1607 | | - "file = open(os.path.join(BASE_DIR, \"feature_repo/\", \"user_features.py\"), \"w\")\n", |
| 1607 | + "file = open(os.path.join(feature_repo_path, \"user_features.py\"), \"w\")\n", |
1608 | 1608 | "file.write(\n", |
1609 | 1609 | " \"\"\"\n", |
1610 | | - "from google.protobuf.duration_pb2 import Duration\n", |
1611 | | - "import datetime\n", |
1612 | | - "from feast import Entity, Feature, FeatureView, ValueType\n", |
| 1610 | + "from datetime import timedelta\n", |
| 1611 | + "from feast import Entity, Field, FeatureView, ValueType\n", |
| 1612 | + "from feast.types import Int32\n", |
1613 | 1613 | "from feast.infra.offline_stores.file_source import FileSource\n", |
1614 | 1614 | "\n", |
1615 | 1615 | "user_features = FileSource(\n", |
1616 | 1616 | " path=\"{}\",\n", |
1617 | | - " event_timestamp_column=\"datetime\",\n", |
| 1617 | + " timestamp_field=\"datetime\",\n", |
1618 | 1618 | " created_timestamp_column=\"created\",\n", |
1619 | 1619 | ")\n", |
1620 | 1620 | "\n", |
1621 | | - "user_raw = Entity(name=\"user_id_raw\", value_type=ValueType.INT32, description=\"user id raw\",)\n", |
| 1621 | + "user_raw = Entity(name=\"user_id_raw\", value_type=ValueType.INT32, join_keys=[\"user_id_raw\"],)\n", |
1622 | 1622 | "\n", |
1623 | 1623 | "user_features_view = FeatureView(\n", |
1624 | 1624 | " name=\"user_features\",\n", |
1625 | | - " entities=[\"user_id_raw\"],\n", |
1626 | | - " ttl=Duration(seconds=86400 * 7),\n", |
1627 | | - " features=[\n", |
1628 | | - " Feature(name=\"user_shops\", dtype=ValueType.INT32),\n", |
1629 | | - " Feature(name=\"user_profile\", dtype=ValueType.INT32),\n", |
1630 | | - " Feature(name=\"user_group\", dtype=ValueType.INT32),\n", |
1631 | | - " Feature(name=\"user_gender\", dtype=ValueType.INT32),\n", |
1632 | | - " Feature(name=\"user_age\", dtype=ValueType.INT32),\n", |
1633 | | - " Feature(name=\"user_consumption_2\", dtype=ValueType.INT32),\n", |
1634 | | - " Feature(name=\"user_is_occupied\", dtype=ValueType.INT32),\n", |
1635 | | - " Feature(name=\"user_geography\", dtype=ValueType.INT32),\n", |
1636 | | - " Feature(name=\"user_intentions\", dtype=ValueType.INT32),\n", |
1637 | | - " Feature(name=\"user_brands\", dtype=ValueType.INT32),\n", |
1638 | | - " Feature(name=\"user_categories\", dtype=ValueType.INT32),\n", |
1639 | | - " Feature(name=\"user_id\", dtype=ValueType.INT32),\n", |
| 1625 | + " entities=[user_raw],\n", |
| 1626 | + " ttl=timedelta(0),\n", |
| 1627 | + " schema=[\n", |
| 1628 | + " Field(name=\"user_shops\", dtype=Int32),\n", |
| 1629 | + " Field(name=\"user_profile\", dtype=Int32),\n", |
| 1630 | + " Field(name=\"user_group\", dtype=Int32),\n", |
| 1631 | + " Field(name=\"user_gender\", dtype=Int32),\n", |
| 1632 | + " Field(name=\"user_age\", dtype=Int32),\n", |
| 1633 | + " Field(name=\"user_consumption_2\", dtype=Int32),\n", |
| 1634 | + " Field(name=\"user_is_occupied\", dtype=Int32),\n", |
| 1635 | + " Field(name=\"user_geography\", dtype=Int32),\n", |
| 1636 | + " Field(name=\"user_intentions\", dtype=Int32),\n", |
| 1637 | + " Field(name=\"user_brands\", dtype=Int32),\n", |
| 1638 | + " Field(name=\"user_categories\", dtype=Int32),\n", |
| 1639 | + " Field(name=\"user_id\", dtype=Int32),\n", |
1640 | 1640 | " ],\n", |
1641 | 1641 | " online=True,\n", |
1642 | | - " input=user_features,\n", |
| 1642 | + " source=user_features,\n", |
1643 | 1643 | " tags=dict(),\n", |
1644 | 1644 | ")\n", |
1645 | 1645 | "\"\"\".format(\n", |
1646 | | - " os.path.join(BASE_DIR, \"feature_repo/data/\", \"user_features.parquet\")\n", |
| 1646 | + " os.path.join(feature_repo_path, \"data/\", \"user_features.parquet\")\n", |
1647 | 1647 | " )\n", |
1648 | 1648 | ")\n", |
1649 | 1649 | "file.close()" |
|
1656 | 1656 | "metadata": {}, |
1657 | 1657 | "outputs": [], |
1658 | 1658 | "source": [ |
1659 | | - "with open(os.path.join(BASE_DIR, \"feature_repo/\", \"item_features.py\"), \"w\") as f:\n", |
| 1659 | + "with open(os.path.join(feature_repo_path, \"item_features.py\"), \"w\") as f:\n", |
1660 | 1660 | " f.write(\n", |
1661 | 1661 | " \"\"\"\n", |
1662 | | - "from google.protobuf.duration_pb2 import Duration\n", |
1663 | | - "import datetime\n", |
1664 | | - "from feast import Entity, Feature, FeatureView, ValueType\n", |
| 1662 | + "from datetime import timedelta\n", |
| 1663 | + "from feast import Entity, Field, FeatureView, ValueType\n", |
| 1664 | + "from feast.types import Int32\n", |
1665 | 1665 | "from feast.infra.offline_stores.file_source import FileSource\n", |
1666 | 1666 | "\n", |
1667 | 1667 | "item_features = FileSource(\n", |
1668 | 1668 | " path=\"{}\",\n", |
1669 | | - " event_timestamp_column=\"datetime\",\n", |
| 1669 | + " timestamp_field=\"datetime\",\n", |
1670 | 1670 | " created_timestamp_column=\"created\",\n", |
1671 | 1671 | ")\n", |
1672 | 1672 | "\n", |
1673 | | - "item = Entity(name=\"item_id\", value_type=ValueType.INT32, description=\"item id\",)\n", |
| 1673 | + "item = Entity(name=\"item_id\", value_type=ValueType.INT32, join_keys=[\"item_id\"],)\n", |
1674 | 1674 | "\n", |
1675 | 1675 | "item_features_view = FeatureView(\n", |
1676 | 1676 | " name=\"item_features\",\n", |
1677 | | - " entities=[\"item_id\"],\n", |
1678 | | - " ttl=Duration(seconds=86400 * 7),\n", |
1679 | | - " features=[\n", |
1680 | | - " Feature(name=\"item_category\", dtype=ValueType.INT32),\n", |
1681 | | - " Feature(name=\"item_shop\", dtype=ValueType.INT32),\n", |
1682 | | - " Feature(name=\"item_brand\", dtype=ValueType.INT32),\n", |
1683 | | - " Feature(name=\"item_id_raw\", dtype=ValueType.INT32),\n", |
| 1677 | + " entities=[item],\n", |
| 1678 | + " ttl=timedelta(0),\n", |
| 1679 | + " schema=[\n", |
| 1680 | + " Field(name=\"item_category\", dtype=Int32),\n", |
| 1681 | + " Field(name=\"item_shop\", dtype=Int32),\n", |
| 1682 | + " Field(name=\"item_brand\", dtype=Int32),\n", |
| 1683 | + " Field(name=\"item_id_raw\", dtype=Int32),\n", |
1684 | 1684 | " ],\n", |
1685 | 1685 | " online=True,\n", |
1686 | | - " input=item_features,\n", |
| 1686 | + " source=item_features,\n", |
1687 | 1687 | " tags=dict(),\n", |
1688 | 1688 | ")\n", |
1689 | 1689 | "\"\"\".format(\n", |
1690 | | - " os.path.join(BASE_DIR, \"feature_repo/data/\", \"item_features.parquet\")\n", |
| 1690 | + " os.path.join(feature_repo_path, \"data/\", \"item_features.parquet\")\n", |
1691 | 1691 | " )\n", |
1692 | 1692 | " )\n", |
1693 | 1693 | "file.close()" |
|
1746 | 1746 | "source": [ |
1747 | 1747 | "import seedir as sd\n", |
1748 | 1748 | "\n", |
1749 | | - "feature_repo_path = os.path.join(BASE_DIR, \"feature_repo\")\n", |
| 1749 | + "feature_repo_path = os.path.join(BASE_DIR, \"feast\")\n", |
1750 | 1750 | "sd.seedir(\n", |
1751 | 1751 | " feature_repo_path,\n", |
1752 | 1752 | " style=\"lines\",\n", |
|
0 commit comments