{ "cells": [ { "cell_type": "markdown", "id": "0e8be874", "metadata": {}, "source": [ "### Compute historical feature values\n", "\n", "Historical feature values are needed to train and test Machine Learning models. \n", "\n", "Let's take the feature list we just created and compute feature values for a given observation table." ] }, { "cell_type": "code", "execution_count": 1, "id": "e6475ae1", "metadata": { "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mUsing configuration file at: /Users/viktor/.featurebyte/config.yaml\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mActive profile: tutorial (https://tutorials.featurebyte.com/api/v1)\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mSDK version: 0.6.0.dev121\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mNo catalog activated.\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20m10 feature lists, 59 features deployed\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mUsing profile: tutorial\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mUsing configuration file at: /Users/viktor/.featurebyte/config.yaml\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:03\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mActive profile: tutorial (https://tutorials.featurebyte.com/api/v1)\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:04\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mSDK version: 0.6.0.dev121\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:04\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mNo catalog activated.\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:04\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20m10 feature lists, 59 features deployed\u001b[0m\u001b[0m\n", "\u001b[32;20m16:45:04\u001b[0m | \u001b[1m\u001b[38;20mINFO \u001b[0m\u001b[0m | \u001b[1m\u001b[38;20mCatalog activated: Grocery Dataset Tutorial\u001b[0m\u001b[0m\n" ] } ], "source": [ "import featurebyte as fb\n", "\n", "# Set your profile to the tutorial environment\n", "fb.use_profile(\"tutorial\")\n", "\n", "catalog_name = \"Grocery Dataset Tutorial\"\n", "catalog = fb.Catalog.activate(catalog_name) " ] }, { "cell_type": "markdown", "id": "cb3085ea", "metadata": {}, "source": [ "#### List feature lists in Catalog" ] }, { "cell_type": "code", "execution_count": 2, "id": "25d0339a", "metadata": { "tags": [] }, "outputs": [ { "data": { "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", "
idnamenum_featurestatusdeployedreadiness_fraconline_fractablesentitiesprimary_entitycreated_at
06564b959d3f7244b7fc926a0Customer Simple FeatureList7DRAFTFalse0.00.0[GROCERYCUSTOMER, GROCERYINVOICE, INVOICEITEMS...[customer][customer]2023-11-27T15:44:36.966000
\n", "
" ], "text/plain": [ " id name num_feature status \\\n", "0 6564b959d3f7244b7fc926a0 Customer Simple FeatureList 7 DRAFT \n", "\n", " deployed readiness_frac online_frac \\\n", "0 False 0.0 0.0 \n", "\n", " tables entities \\\n", "0 [GROCERYCUSTOMER, GROCERYINVOICE, INVOICEITEMS... [customer] \n", "\n", " primary_entity created_at \n", "0 [customer] 2023-11-27T15:44:36.966000 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "catalog.list_feature_lists()" ] }, { "cell_type": "markdown", "id": "abe93856", "metadata": {}, "source": [ "#### Get Feature List from Catalog" ] }, { "cell_type": "code", "execution_count": 3, "id": "96147a09", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading Feature(s) |████████████████████████████████████████| 7/7 [100%] in 0.7s\n" ] } ], "source": [ "simple_feature_list = catalog.get_feature_list(\"Customer Simple FeatureList\")" ] }, { "cell_type": "markdown", "id": "282901eb", "metadata": {}, "source": [ "#### Get an observation table" ] }, { "cell_type": "code", "execution_count": 4, "id": "02737afa", "metadata": { "tags": [] }, "outputs": [ { "data": { "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", "
idnametypeshapefeature_store_namecreated_at
06564b8b466074d16d2f61078Preview Table with 10 itemsview[10, 2]playground2023-11-27T15:41:42.922000
16564b8a56f39a417e1370dbd1K Customers Spending next 2 weeks at time of ...observation_table[1000, 3]playground2023-11-27T15:41:29.401000
26564b89d66074d16d2f610751K Customers at time of purchase 22S2-23S1view[1000, 2]playground2023-11-27T15:41:20.022000
36564b89266074d16d2f61073Preview Table with 10 Customersview[10, 2]playground2023-11-27T15:41:10.029000
\n", "
" ], "text/plain": [ " id \\\n", "0 6564b8b466074d16d2f61078 \n", "1 6564b8a56f39a417e1370dbd \n", "2 6564b89d66074d16d2f61075 \n", "3 6564b89266074d16d2f61073 \n", "\n", " name type \\\n", "0 Preview Table with 10 items view \n", "1 1K Customers Spending next 2 weeks at time of ... observation_table \n", "2 1K Customers at time of purchase 22S2-23S1 view \n", "3 Preview Table with 10 Customers view \n", "\n", " shape feature_store_name created_at \n", "0 [10, 2] playground 2023-11-27T15:41:42.922000 \n", "1 [1000, 3] playground 2023-11-27T15:41:29.401000 \n", "2 [1000, 2] playground 2023-11-27T15:41:20.022000 \n", "3 [10, 2] playground 2023-11-27T15:41:10.029000 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List observation tables\n", "catalog.list_observation_tables()" ] }, { "cell_type": "code", "execution_count": 5, "id": "6cc65546", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Get observation table: '1K Customers Spending next 2 weeks at time of purchase 22S2-23S1'\n", "training_observations = catalog.get_observation_table(\n", " \"1K Customers Spending next 2 weeks at time of purchase 22S2-23S1\"\n", ")" ] }, { "cell_type": "code", "execution_count": 6, "id": "3680ba74", "metadata": { "tags": [] }, "outputs": [ { "data": { "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", "
POINT_IN_TIMEGROCERYCUSTOMERGUIDCUSTOMER_Sum_of_invoice_Amount_next_14d
02022-12-22 18:43:31217d44e9-d85b-4dba-9847-2c4c071f73030.00
12023-06-10 15:09:4744d5a090-001a-4899-be0b-a74932ed42dc141.42
22022-11-29 17:08:01f761a5d1-3b66-4faf-82f1-6cd59e2e28f832.69
32022-08-01 06:44:401e866814-e5a6-475d-87e3-b53377cc005b15.48
42023-03-22 16:07:5744d5a090-001a-4899-be0b-a74932ed42dc234.78
52022-12-13 09:58:16df0b0c04-f51b-48a5-b330-772cae5b928334.79
62022-07-22 15:13:54f761a5d1-3b66-4faf-82f1-6cd59e2e28f89.08
72023-04-04 17:37:33b5a96648-044f-4927-9877-a7d5a195681146.65
82022-08-02 16:59:08a67434f3-f3d1-4c68-af80-fcd8fb7c9fc60.00
92022-11-07 16:58:078f029048-c927-4861-809c-9eccec8e474350.11
\n", "
" ], "text/plain": [ " POINT_IN_TIME GROCERYCUSTOMERGUID \\\n", "0 2022-12-22 18:43:31 217d44e9-d85b-4dba-9847-2c4c071f7303 \n", "1 2023-06-10 15:09:47 44d5a090-001a-4899-be0b-a74932ed42dc \n", "2 2022-11-29 17:08:01 f761a5d1-3b66-4faf-82f1-6cd59e2e28f8 \n", "3 2022-08-01 06:44:40 1e866814-e5a6-475d-87e3-b53377cc005b \n", "4 2023-03-22 16:07:57 44d5a090-001a-4899-be0b-a74932ed42dc \n", "5 2022-12-13 09:58:16 df0b0c04-f51b-48a5-b330-772cae5b9283 \n", "6 2022-07-22 15:13:54 f761a5d1-3b66-4faf-82f1-6cd59e2e28f8 \n", "7 2023-04-04 17:37:33 b5a96648-044f-4927-9877-a7d5a1956811 \n", "8 2022-08-02 16:59:08 a67434f3-f3d1-4c68-af80-fcd8fb7c9fc6 \n", "9 2022-11-07 16:58:07 8f029048-c927-4861-809c-9eccec8e4743 \n", "\n", " CUSTOMER_Sum_of_invoice_Amount_next_14d \n", "0 0.00 \n", "1 141.42 \n", "2 32.69 \n", "3 15.48 \n", "4 234.78 \n", "5 34.79 \n", "6 9.08 \n", "7 46.65 \n", "8 0.00 \n", "9 50.11 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "training_observations.sample()" ] }, { "cell_type": "markdown", "id": "d536db06", "metadata": {}, "source": [ "#### Compute historical features" ] }, { "cell_type": "code", "execution_count": 7, "id": "c070ac56", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Done! |████████████████████████████████████████| 100% in 35.7s (0.03%/s) \n" ] } ], "source": [ "# Create 'Simple Training data 1K Spending n2w 22S2-23S1' historical feature table\n", "training_data_table = simple_feature_list.compute_historical_feature_table(\n", " training_observations,\n", " historical_feature_table_name=\"Simple Training data 1K Spending n2w 22S2-23S1\",\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "id": "e616521d", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading table |████████████████████████████████████████| 1000/1000 [100%] in|█████████████████████████████▋ | ▂▂▄ 740/1000 [74%] \n" ] }, { "data": { "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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
POINT_IN_TIMEGROCERYCUSTOMERGUIDCUSTOMER_Sum_of_invoice_Amount_next_14dCUSTOMER_Age_bandCUSTOMER_Latest_invoice_AmountCUSTOMER_Count_of_invoice_14dCUSTOMER_Avg_of_invoice_Amount_14dCUSTOMER_Std_of_invoice_Amount_14dCUSTOMER_Latest_invoice_Amount_Z_Score_to_invoice_Amount_28dCUSTOMER_vs_OVERALL_item_TotalCost_across_product_ProductGroups_26w
02022-08-02 10:50:095f18f733-ef27-423b-8fb7-6172948c925555.9675-796.0027.1201.120000-0.4259150.819385
12022-08-29 13:47:112b068f1d-d99b-4c2f-a737-46f619a76cc829.2950-5422.96523.59011.680365-0.2063280.672926
22022-07-12 16:13:42cc4220ec-16ab-4bb9-991d-deef994bf27a115.5435-3911.86422.8309.219916-0.8680160.728931
32022-07-28 14:39:569540fe09-bf1c-41b4-847b-35f8a4a7992740.3930-347.98610.8254.767972-0.6301010.811204
42022-10-23 09:59:0062f833f8-029c-4446-bb85-b90a867d816e88.7420-241.0021.6950.695000-0.6690110.315181
.................................
9952022-12-09 03:42:525845828c-6c2f-461f-b8cb-16ce5a4ffa7320.1125-292.680NaNNaN-0.9643060.743137
9962023-03-07 19:19:20dba29407-bc25-44ab-853c-3f7c1b78f2965.5550-5431.000NaNNaNNaN0.485408
9972022-10-29 16:58:50f2173f69-085f-4264-95c0-f46cbd5834aa101.7935-3925.070NaNNaNNaN0.457425
9982022-12-22 13:32:447e4e042b-6c14-4ba1-a74d-ecb70664fb2f0.0015-195.180NaNNaNNaN0.212817
9992022-11-16 19:24:3309f35825-38ef-4a01-8385-c41822f59de941.7850-5428.540NaNNaNNaN0.391692
\n", "

1000 rows × 10 columns

\n", "
" ], "text/plain": [ " POINT_IN_TIME GROCERYCUSTOMERGUID \\\n", "0 2022-08-02 10:50:09 5f18f733-ef27-423b-8fb7-6172948c9255 \n", "1 2022-08-29 13:47:11 2b068f1d-d99b-4c2f-a737-46f619a76cc8 \n", "2 2022-07-12 16:13:42 cc4220ec-16ab-4bb9-991d-deef994bf27a \n", "3 2022-07-28 14:39:56 9540fe09-bf1c-41b4-847b-35f8a4a79927 \n", "4 2022-10-23 09:59:00 62f833f8-029c-4446-bb85-b90a867d816e \n", ".. ... ... \n", "995 2022-12-09 03:42:52 5845828c-6c2f-461f-b8cb-16ce5a4ffa73 \n", "996 2023-03-07 19:19:20 dba29407-bc25-44ab-853c-3f7c1b78f296 \n", "997 2022-10-29 16:58:50 f2173f69-085f-4264-95c0-f46cbd5834aa \n", "998 2022-12-22 13:32:44 7e4e042b-6c14-4ba1-a74d-ecb70664fb2f \n", "999 2022-11-16 19:24:33 09f35825-38ef-4a01-8385-c41822f59de9 \n", "\n", " CUSTOMER_Sum_of_invoice_Amount_next_14d CUSTOMER_Age_band \\\n", "0 55.96 75-79 \n", "1 29.29 50-54 \n", "2 115.54 35-39 \n", "3 40.39 30-34 \n", "4 88.74 20-24 \n", ".. ... ... \n", "995 20.11 25-29 \n", "996 5.55 50-54 \n", "997 101.79 35-39 \n", "998 0.00 15-19 \n", "999 41.78 50-54 \n", "\n", " CUSTOMER_Latest_invoice_Amount CUSTOMER_Count_of_invoice_14d \\\n", "0 6.00 2 \n", "1 22.96 5 \n", "2 11.86 4 \n", "3 7.98 6 \n", "4 1.00 2 \n", ".. ... ... \n", "995 2.68 0 \n", "996 31.00 0 \n", "997 25.07 0 \n", "998 5.18 0 \n", "999 28.54 0 \n", "\n", " CUSTOMER_Avg_of_invoice_Amount_14d CUSTOMER_Std_of_invoice_Amount_14d \\\n", "0 7.120 1.120000 \n", "1 23.590 11.680365 \n", "2 22.830 9.219916 \n", "3 10.825 4.767972 \n", "4 1.695 0.695000 \n", ".. ... ... \n", "995 NaN NaN \n", "996 NaN NaN \n", "997 NaN NaN \n", "998 NaN NaN \n", "999 NaN NaN \n", "\n", " CUSTOMER_Latest_invoice_Amount_Z_Score_to_invoice_Amount_28d \\\n", "0 -0.425915 \n", "1 -0.206328 \n", "2 -0.868016 \n", "3 -0.630101 \n", "4 -0.669011 \n", ".. ... \n", "995 -0.964306 \n", "996 NaN \n", "997 NaN \n", "998 NaN \n", "999 NaN \n", "\n", " CUSTOMER_vs_OVERALL_item_TotalCost_across_product_ProductGroups_26w \n", "0 0.819385 \n", "1 0.672926 \n", "2 0.728931 \n", "3 0.811204 \n", "4 0.315181 \n", ".. ... \n", "995 0.743137 \n", "996 0.485408 \n", "997 0.457425 \n", "998 0.212817 \n", "999 0.391692 \n", "\n", "[1000 rows x 10 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(training_data_table.to_pandas())" ] }, { "cell_type": "code", "execution_count": 9, "id": "6a5faa69", "metadata": { "tags": [] }, "outputs": [ { "data": { "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", "
idnamefeature_store_nameobservation_table_nameshapecreated_at
06564b9896f39a417e1370e23Simple Training data 1K Spending n2w 22S2-23S1playground1K Customers Spending next 2 weeks at time of ...[1000, 10]2023-11-27T15:45:46.646000
\n", "
" ], "text/plain": [ " id name \\\n", "0 6564b9896f39a417e1370e23 Simple Training data 1K Spending n2w 22S2-23S1 \n", "\n", " feature_store_name observation_table_name \\\n", "0 playground 1K Customers Spending next 2 weeks at time of ... \n", "\n", " shape created_at \n", "0 [1000, 10] 2023-11-27T15:45:46.646000 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "### List historical feature tables from catalog\n", "catalog.list_historical_feature_tables()" ] }, { "cell_type": "markdown", "id": "a48de9bb", "metadata": {}, "source": [ "### Concepts in this tutorial\n", "- [More on Historical feature serving](https://docs.featurebyte.com/latest/about/glossary/#historical-feature-serving)\n", "\n", "#### SDK reference for\n", "- [Historical feature table](https://docs.featurebyte.com/latest/reference/core/historical_feature_table/)\n", "- [FeatureList.compute historical feature table()](https://docs.featurebyte.com/latest/reference/featurebyte.api.feature_list.FeatureList.compute_historical_feature_table/)\n", "- [FeatureList.compute_historical_features()](https://docs.featurebyte.com/latest/reference/featurebyte.api.feature_list.FeatureList.compute_historical_features/) to compute directly a data frame" ] }, { "cell_type": "code", "execution_count": 10, "id": "67d0c7c7", "metadata": { "tags": [] }, "outputs": [ { "data": { "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", "
idnametypestatusentitiescreated_at
06564b7edbeba6c193e0fe3beGROCERYPRODUCTdimension_tablePUBLIC_DRAFT[product, productgroup]2023-11-27T15:38:22.276000
16564b7ecbeba6c193e0fe3bdINVOICEITEMSitem_tablePUBLIC_DRAFT[item, invoice, product]2023-11-27T15:38:21.489000
26564b7ebbeba6c193e0fe3bcGROCERYINVOICEevent_tablePUBLIC_DRAFT[invoice, customer]2023-11-27T15:38:20.150000
36564b7eabeba6c193e0fe3bbGROCERYCUSTOMERscd_tablePUBLIC_DRAFT[customer, frenchstate]2023-11-27T15:38:19.300000
\n", "
" ], "text/plain": [ " id name type status \\\n", "0 6564b7edbeba6c193e0fe3be GROCERYPRODUCT dimension_table PUBLIC_DRAFT \n", "1 6564b7ecbeba6c193e0fe3bd INVOICEITEMS item_table PUBLIC_DRAFT \n", "2 6564b7ebbeba6c193e0fe3bc GROCERYINVOICE event_table PUBLIC_DRAFT \n", "3 6564b7eabeba6c193e0fe3bb GROCERYCUSTOMER scd_table PUBLIC_DRAFT \n", "\n", " entities created_at \n", "0 [product, productgroup] 2023-11-27T15:38:22.276000 \n", "1 [item, invoice, product] 2023-11-27T15:38:21.489000 \n", "2 [invoice, customer] 2023-11-27T15:38:20.150000 \n", "3 [customer, frenchstate] 2023-11-27T15:38:19.300000 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "catalog.list_tables()" ] }, { "cell_type": "code", "execution_count": null, "id": "39690066", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.13" } }, "nbformat": 4, "nbformat_minor": 5 }