sfcc-cip-analytics-client
Version:
SFCC Commerce Intelligence Platform Analytics Client
47 lines (46 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.queryCustomerRegistrationTrends = void 0;
const types_1 = require("../types");
const helpers_1 = require("../helpers");
/**
* Query customer registration trends to track acquisition effectiveness
* Business Question: How effectively are we acquiring new customers and what drives registrations?
* Primary users: Marketing and CRM teams
* @param client The Avatica client instance (must have an open connection)
* @param siteId The natural site ID to filter by
* @param dateRange Date range to filter results
* @param batchSize Size of each batch to yield (default: 100)
*/
const queryCustomerRegistrationTrends = function queryCustomerRegistrationTrends(client, params, batchSize = 100) {
const { sql, parameters } = queryCustomerRegistrationTrends.QUERY(params);
return (0, helpers_1.executeParameterizedQuery)(client, (0, types_1.cleanSQL)(sql), parameters, batchSize);
};
exports.queryCustomerRegistrationTrends = queryCustomerRegistrationTrends;
exports.queryCustomerRegistrationTrends.metadata = {
name: "customer-registration-trends",
description: "Track customer acquisition effectiveness and registration drivers",
category: "Customer Analytics",
requiredParams: ["siteId", "from", "to"],
};
exports.queryCustomerRegistrationTrends.QUERY = (params) => {
(0, helpers_1.validateRequiredParams)(params, ["siteId", "dateRange"]);
const { startDate, endDate } = (0, helpers_1.formatDateRange)(params.dateRange);
const sql = `
SELECT
r.registration_date AS "date",
SUM(r.num_registrations) AS new_registrations,
r.device_class_code,
s.nsite_id
FROM ccdw_aggr_registration r
JOIN ccdw_dim_site s ON s.site_id = r.site_id
WHERE r.registration_date >= '${startDate}' AND r.registration_date <= '${endDate}'
AND s.nsite_id = '${params.siteId}'
GROUP BY r.registration_date, r.device_class_code, s.nsite_id
ORDER BY r.registration_date
`;
return {
sql,
parameters: [],
};
};