UNPKG

sfcc-cip-analytics-client

Version:

SFCC Commerce Intelligence Platform Analytics Client

63 lines (62 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queryTopReferrers = void 0; const types_1 = require("../types"); const helpers_1 = require("../helpers"); /** * Query top referrers to identify high-value traffic sources * Business Question: Where is my traffic coming from and which sources drive the most valuable visitors? * Primary users: Marketing 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 limit Number of top referrers to return (default: 20) * @param batchSize Size of each batch to yield (default: 100) */ const queryTopReferrers = function queryTopReferrers(client, params, batchSize = 100) { const { sql, parameters } = queryTopReferrers.QUERY(params); return (0, helpers_1.executeParameterizedQuery)(client, (0, types_1.cleanSQL)(sql), parameters, batchSize); }; exports.queryTopReferrers = queryTopReferrers; exports.queryTopReferrers.metadata = { name: "top-referrers", description: "Identify high-value traffic sources and referrer performance", category: "Traffic Analytics", requiredParams: ["siteId", "from", "to"], optionalParams: ["limit"], }; exports.queryTopReferrers.QUERY = (params) => { (0, helpers_1.validateRequiredParams)(params, ["siteId", "dateRange"]); const { startDate, endDate } = (0, helpers_1.formatDateRange)(params.dateRange); const limit = params.limit || 20; const sql = ` WITH total AS ( SELECT SUM(num_visits) AS total_visits FROM ccdw_aggr_visit_referrer WHERE visit_date >= '${startDate}' AND visit_date <= '${endDate}' ) SELECT vr.referrer_medium AS traffic_medium, vr.referrer_source AS traffic_source, SUM(vr.num_visits) AS total_visits, SUM(vr.num_visits) * 100.0 / total.total_visits AS visit_percentage FROM ccdw_aggr_visit_referrer vr JOIN ccdw_dim_site s ON s.site_id = vr.site_id JOIN total ON TRUE WHERE vr.visit_date >= '${startDate}' AND vr.visit_date <= '${endDate}' AND s.nsite_id = '${params.siteId}' GROUP BY vr.referrer_medium, vr.referrer_source, total.total_visits ORDER BY total_visits DESC LIMIT ${limit} `; return { sql, parameters: [], }; };