sfcc-cip-analytics-client
Version:
SFCC Commerce Intelligence Platform Analytics Client
51 lines (50 loc) • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.queryOcapiRequests = void 0;
const types_1 = require("../types");
const helpers_1 = require("../helpers");
/**
* Query OCAPI performance metrics to monitor system health and customer experience
* Business Question: Is our system performing well enough to support customer experience?
* Primary users: Operations teams, Engineering
* @param client The Avatica client instance (must have an open connection)
* @param params Query parameters including siteId and dateRange
* @param batchSize Size of each batch to yield (default: 100)
*/
const queryOcapiRequests = async function* queryOcapiRequests(client, params, batchSize = 100) {
const { sql, parameters } = queryOcapiRequests.QUERY(params);
yield* (0, helpers_1.executeParameterizedQuery)(client, (0, types_1.cleanSQL)(sql), parameters, batchSize);
};
exports.queryOcapiRequests = queryOcapiRequests;
exports.queryOcapiRequests.metadata = {
name: "ocapi-requests",
description: "Analyze API performance including response times and request volumes",
category: "Technical Analytics",
requiredParams: ["siteId", "from", "to"],
};
exports.queryOcapiRequests.QUERY = (params) => {
(0, helpers_1.validateRequiredParams)(params, ["siteId", "dateRange"]);
const { startDate, endDate } = (0, helpers_1.formatDateRange)(params.dateRange);
const sql = `
SELECT
o.request_date,
o.api_name,
o.api_resource,
SUM(o.num_requests) as total_requests,
SUM(o.response_time) as total_response_time,
CASE WHEN SUM(o.num_requests) > 0
THEN SUM(o.response_time) / SUM(o.num_requests)
ELSE 0 END as avg_response_time,
o.client_id
FROM ccdw_aggr_ocapi_request o
JOIN ccdw_dim_site s ON s.site_id = o.site_id
WHERE o.request_date >= '${startDate}' AND o.request_date <= '${endDate}'
AND s.nsite_id = '${params.siteId}'
GROUP BY o.request_date, o.api_name, o.api_resource, o.client_id
ORDER BY total_requests DESC
`;
return {
sql,
parameters: [],
};
};