RELATED() vs EXTEND()
The EXTEND() operation is the general-purpose mechanism for joining features across entities. The RELATED() function family provides a more concise and easier to understand syntax for simple cases.
Use RELATED() if possible, and EXTEND() when you need work with many foreign keys or require more explicit control over the binding logic.
foreign key ↔ primary key
FeatureQL
SELECT
CUSTOMER_ID,
ORDER_CITY_RELATED := RELATED(TABLES.FCT_ORDERS[order_city_name] VIA TABLES.AGG_CUSTOMERS_OBT[last_order_id]),
ORDER_CITY_EXTEND := EXTEND(
ROW(TABLES.AGG_CUSTOMERS_OBT[last_order_id] as last_order_id)
WITH TABLES.FCT_ORDERS[order_city_name] as CITY_NAME
VIA last_order_id BOUND TO ORDER_ID
)[CITY_NAME]
FROM FM.ECOMM
FOR
CUSTOMER_ID := BIND_VALUES(SEQUENCE(100,102)),
;Result
| FM.ECOMM.CUSTOMER_ID BIGINT | ORDER_CITY_RELATED VARCHAR | ORDER_CITY_EXTEND VARCHAR |
|---|---|---|
| 100 | Barcelona | Barcelona |
| 101 | Barcelona | Barcelona |
| 102 | Barcelona | Barcelona |
foreign key ↔ foreign key
FeatureQL
SELECT
CUSTOMER_ID,
NUM_ORDERS_RELATED := RELATED(SUM(1) GROUP BY TABLES.FCT_ORDERS[order_customer_id] VIA CUSTOMER_ID),
NUM_ORDERS_EXTEND := EXTEND(
ROW(CUSTOMER_ID as CUSTOMER_ID)
WITH SUM(1) GROUP BY TABLES.FCT_ORDERS[order_customer_id] as num_orders
VIA CUSTOMER_ID BOUND TO TABLES.FCT_ORDERS[order_customer_id]
)[num_orders]
FROM FM.ECOMM
FOR
CUSTOMER_ID := BIND_VALUES(SEQUENCE(100,102)),
ORDER_ID := BIND_VALUES(SEQUENCE(200,203)),
;Result
| FM.ECOMM.CUSTOMER_ID BIGINT | NUM_ORDERS_RELATED BIGINT | NUM_ORDERS_EXTEND VARCHAR |
|---|---|---|
| 100 | 2 | 2 |
| 101 | 1 | 1 |
| 102 | 1 | 1 |
On this page