retail/recommendation-system/bqml-scann/sql_scripts/sp_ExractEmbeddings.sql (34 lines of code) (raw):
CREATE OR REPLACE PROCEDURE @DATASET_NAME.sp_ExractEmbeddings()
BEGIN
CREATE OR REPLACE TABLE @DATASET_NAME.item_embeddings AS
WITH
step1 AS
(
SELECT
feature AS item_Id,
factor_weights,
intercept AS bias,
FROM
ML.WEIGHTS(MODEL `@DATASET_NAME.item_matching_model`)
WHERE feature != 'global__INTERCEPT__'
),
step2 AS
(
SELECT
item_Id,
factor,
SUM(weight) AS weight,
SUM(bias) AS bias
FROM step1,
UNNEST(step1.factor_weights) AS embedding
GROUP BY
item_Id,
factor
)
SELECT
item_Id,
ARRAY_AGG(weight ORDER BY factor ASC) embedding,
bias
FROM step2
GROUP BY item_Id, bias;
END