CUSTOMER vs OVERALL Avg of INVOICE Sum of item Discount 28d
SDK code to create CUSTOMER_vs_OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d¶
Feature description:
Similarity between the customer and all customers measured by the Ratio of the Avg of INVOICE_Sum_of_item_Discount over 28d for both entities.
In [ ]:
Copied!
import featurebyte as fb
fb.use_profile("tutorial")
import featurebyte as fb
fb.use_profile("tutorial")
Activate catalog¶
In [ ]:
Copied!
catalog = fb.Catalog.activate("Grocery Dataset Tutorial")
catalog = fb.Catalog.activate("Grocery Dataset Tutorial")
Set windows for aggregation¶
In [ ]:
Copied!
windows = ['28d']
windows = ['28d']
Get view from table¶
In [ ]:
Copied!
# Get view from GROCERYINVOICE event table.
groceryinvoice_view = catalog.get_view("GROCERYINVOICE")
# Get view from GROCERYINVOICE event table.
groceryinvoice_view = catalog.get_view("GROCERYINVOICE")
In [ ]:
Copied!
# Get view from INVOICEITEMS item table.
invoiceitems_view = catalog.get_view("INVOICEITEMS")
# Get view from INVOICEITEMS item table.
invoiceitems_view = catalog.get_view("INVOICEITEMS")
Do aggregation by invoice in INVOICEITEMS¶
See SDK reference for features
See SDK reference to groupby a view
See SDK reference to do aggregation by invoice
See list of aggregation operations
See SDK reference to add an aggregation by invoice to the event view
In [ ]:
Copied!
# Group invoiceitems_view by invoice entity (GroceryInvoiceGuid).
invoiceitems_view_by_invoice =\
invoiceitems_view.groupby("GroceryInvoiceGuid")
# Group invoiceitems_view by invoice entity (GroceryInvoiceGuid).
invoiceitems_view_by_invoice =\
invoiceitems_view.groupby("GroceryInvoiceGuid")
In [ ]:
Copied!
# Sum Discount for the invoice.
invoice_sum_of_item_discount =\
invoiceitems_view_by_invoice.aggregate(
"Discount", method=fb.AggFunc.SUM,
feature_name="INVOICE_Sum_of_item_Discount"
)
# Sum Discount for the invoice.
invoice_sum_of_item_discount =\
invoiceitems_view_by_invoice.aggregate(
"Discount", method=fb.AggFunc.SUM,
feature_name="INVOICE_Sum_of_item_Discount"
)
In [ ]:
Copied!
# Add INVOICE_Sum_of_item_Discount feature to the GROCERYINVOICE view as a column.
groceryinvoice_view = groceryinvoice_view.add_feature(
"INVOICE_Sum_of_item_Discount",
invoice_sum_of_item_discount
)
# Add INVOICE_Sum_of_item_Discount feature to the GROCERYINVOICE view as a column.
groceryinvoice_view = groceryinvoice_view.add_feature(
"INVOICE_Sum_of_item_Discount",
invoice_sum_of_item_discount
)
Do window aggregation from GROCERYINVOICE¶
See SDK reference for features
See SDK reference to groupby a view
See SDK reference to do aggregation over time
In [ ]:
Copied!
# Group GROCERYINVOICE view by customer entity (GroceryCustomerGuid).
groceryinvoice_view_by_customer =\
groceryinvoice_view.groupby(['GroceryCustomerGuid'])
# Group GROCERYINVOICE view by customer entity (GroceryCustomerGuid).
groceryinvoice_view_by_customer =\
groceryinvoice_view.groupby(['GroceryCustomerGuid'])
In [ ]:
Copied!
# Get Avg of INVOICE_Sum_of_item_Discount for the customer over time.
feature_group =\
groceryinvoice_view_by_customer.aggregate_over(
"INVOICE_Sum_of_item_Discount", method="avg",
feature_names=[
"CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount_28d object from feature group.
customer_avg_of_invoice_sum_of_item_discount_28d =\
feature_group["CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount_28d"]
# Get Avg of INVOICE_Sum_of_item_Discount for the customer over time.
feature_group =\
groceryinvoice_view_by_customer.aggregate_over(
"INVOICE_Sum_of_item_Discount", method="avg",
feature_names=[
"CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount_28d object from feature group.
customer_avg_of_invoice_sum_of_item_discount_28d =\
feature_group["CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount_28d"]
In [ ]:
Copied!
# Group GROCERYINVOICE view without any groupby key for aggregates on all data.
groceryinvoice_view_by_overall =\
groceryinvoice_view.groupby([])
# Group GROCERYINVOICE view without any groupby key for aggregates on all data.
groceryinvoice_view_by_overall =\
groceryinvoice_view.groupby([])
In [ ]:
Copied!
# Get Avg of INVOICE_Sum_of_item_Discount over time.
feature_group =\
groceryinvoice_view_by_overall.aggregate_over(
"INVOICE_Sum_of_item_Discount", method="avg",
feature_names=[
"OVERALL_Avg_of_INVOICE_Sum_of_item_Discount"
+ "_" + w for w in windows
],
windows=windows
)
# Get OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d object from feature group.
overall_avg_of_invoice_sum_of_item_discount_28d =\
feature_group["OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d"]
# Get Avg of INVOICE_Sum_of_item_Discount over time.
feature_group =\
groceryinvoice_view_by_overall.aggregate_over(
"INVOICE_Sum_of_item_Discount", method="avg",
feature_names=[
"OVERALL_Avg_of_INVOICE_Sum_of_item_Discount"
+ "_" + w for w in windows
],
windows=windows
)
# Get OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d object from feature group.
overall_avg_of_invoice_sum_of_item_discount_28d =\
feature_group["OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d"]
Derive Similarity feature across entities¶
In [ ]:
Copied!
# Derive Similarity feature from Ratio of
# CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount_28d
# to OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d = (
customer_avg_of_invoice_sum_of_item_discount_28d
/ overall_avg_of_invoice_sum_of_item_discount_28d
)
# Give a name to new feature
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.name = \
"CUSTOMER_vs_OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d"
# Derive Similarity feature from Ratio of
# CUSTOMER_Avg_of_INVOICE_Sum_of_item_Discount_28d
# to OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d = (
customer_avg_of_invoice_sum_of_item_discount_28d
/ overall_avg_of_invoice_sum_of_item_discount_28d
)
# Give a name to new feature
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.name = \
"CUSTOMER_vs_OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d"
Preview feature¶
Read on the feature primary entity concept
Read on the serving entity concept
In [ ]:
Copied!
#Check the primary entity of the feature'
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.primary_entity
#Check the primary entity of the feature'
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.primary_entity
In [ ]:
Copied!
#Get observation table: 'Preview Table with 10 items'
preview_table = catalog.get_observation_table(
"Preview Table with 10 items"
)
#Get observation table: 'Preview Table with 10 items'
preview_table = catalog.get_observation_table(
"Preview Table with 10 items"
)
In [ ]:
Copied!
#Preview CUSTOMER_vs_OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.preview(
preview_table
)
#Preview CUSTOMER_vs_OVERALL_Avg_of_INVOICE_Sum_of_item_Discount_28d
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.preview(
preview_table
)
Save feature¶
In [ ]:
Copied!
# Save feature
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.save()
# Save feature
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.save()
Add description and see feature definition file¶
In [ ]:
Copied!
# Add description
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.update_description(
"Similarity between the customer and all customers measured by the "
"Ratio of the Avg of INVOICE_Sum_of_item_Discount over 28d for both "
"entities."
)
# See feature definition file
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.definition
# Add description
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.update_description(
"Similarity between the customer and all customers measured by the "
"Ratio of the Avg of INVOICE_Sum_of_item_Discount over 28d for both "
"entities."
)
# See feature definition file
customer_vs_overall_avg_of_invoice_sum_of_item_discount_28d.definition