<retail:basket_affinity>
<retail.basket_affinity> expands upon
<affinity> and supports the common specific retail use case of calculating
basket affinity.
Description
<retail:basket_affinity> makes the more general
<affinity> operation convenient and specific for retail use cases by
performing some additional calculations after the operation, by giving attributes more
retail-specific names, and by providing a TRS panel for the
operation.
Syntax
<retail:basket_affinity
basket_id="[TRANSACTION_ID_COLUMN]"
prod_col1="[PRIMARY_PRODUCT_COLUMN]"
prod_col2="[SECONDARY_PRODUCT_COLUMN]"
prod_filter1="[PRIMARY_PRODUCT_VALUES]"
prod_filter2="[SECONDARY_PRODUCT_VALUES]"
copurchase_threshold=
avgcol="[SALES_COLUMN]"
ignoresegby="0|1"
removediag="0|1"
removebelowdiag="0|1">
</retail:basket_affinity>
Attributes
basket_id- The "basket", or transaction ID column. The table must be segby this column, unless
you indicate
ignoresegby="1". This attribute is required. prod_col1- The primary product column for comparison. This attribute is required.
prod_col2- The secondary product column for comparison. This attribute is required.
prod_filter1- An optional filter for the primary product values in
prod_col1. prod_filter2- An optional filter for the secondary product values in
prod_col2. copurchase_threshold- The default value is
"0.0". avgcol- The sales column. This attribute is optional.
ignoresegby- Set to
"1"to ignore the segmentation requirement. You may return nonsensical results if the data is not in fact segby. The default value is"0".
Example: Retail affinity analysis
The following example demonstrates
how to perform affinity analysis on products of the group
Snack-Chips/Pretzels. We set the prod_filter1 attribute
to "1460" (for the chips/pretzel group). We limit the results so that there
are a minimum of 100 transactions containing both items: the chips/pretzel item and the
accompanying item ("coinc>=100"). Then we sort in descending order by
average basket, so we can see which items when purchased with a chips and pretzels item
resulted in the largest
baskets.
<base table="retaildemo.retail.sales_detail"/>
<link table2="retaildemo.retail.products" col="sku" cols="group"/>
<retail:basket_affinity basket_id="transid" prod_col1="group" prod_col2="sku" prod_filter1="1460"
avgcol="xsales"/>
<sel value="coinc>=100"/>
<sort col="avgbskt" dir="down"/>
<link table2="retaildemo.retail.products" col="key1" col2="group" cols="groupdesc"/>
<link table2="retaildemo.retail.products" col="key2" col2="sku" cols="description"/>
<col name="groupdesc" fixed="1"/>
<col name="description" label="Description" fixed="1"/>