Added a new job to check for changed files before executing the CI workflow. Integrated Tinybird local service, updated environment variables, and refined the CI steps for better functionality and clarity.
70 lines
2.2 KiB
Plaintext
70 lines
2.2 KiB
Plaintext
DESCRIPTION >
|
|
Inspired by DUB implementation
|
|
|
|
NODE dayIntervals
|
|
SQL >
|
|
%
|
|
WITH
|
|
toStartOfDay(
|
|
parseDateTime64BestEffort({{ String(start, '2024-11-01T00:00:00.000Z') }}, 3)
|
|
) AS start,
|
|
toStartOfDay(parseDateTime64BestEffort({{ String(end, '2024-11-02T00:00:00.000Z') }}, 3)) AS
|
|
end
|
|
SELECT
|
|
arrayJoin(
|
|
arrayMap(
|
|
x -> toDateTime64(toStartOfDay(toDateTime64(x, 3)), 3),
|
|
range(toUInt32(start + 86400), toUInt32(end + 86400),
|
|
86400
|
|
)
|
|
)
|
|
) as interval
|
|
|
|
NODE hourIntervals
|
|
SQL >
|
|
%
|
|
WITH
|
|
toStartOfHour(
|
|
parseDateTime64BestEffort({{ String(start, '2024-11-01T00:00:00.000Z') }}, 3)
|
|
) AS start,
|
|
toStartOfHour(parseDateTime64BestEffort({{ String(end, '2024-11-02T00:00:00.000Z') }}, 3)) AS
|
|
end
|
|
SELECT
|
|
arrayJoin(
|
|
arrayMap(x -> toDateTime64(x, 3), range(toUInt32(start + 3600), toUInt32(end + 3600), 3600)
|
|
)
|
|
) as interval
|
|
|
|
NODE selectIntervalByGranularity
|
|
SQL >
|
|
%
|
|
SELECT * FROM {% if granularity == "hour" %} hourIntervals {% else %} dayIntervals {% end %}
|
|
|
|
|
|
NODE timeSeriesWebhookData
|
|
SQL >
|
|
%
|
|
SELECT
|
|
{% if granularity == "hour" %} toStartOfHour(timestamp)
|
|
{% else %} toDateTime64(toStartOfDay(timestamp), 3)
|
|
{% end %} AS interval,
|
|
uniqIf(*, success = true) as success_count,
|
|
uniqIf(*, success = false) as failure_count
|
|
FROM webhookEventMV
|
|
WHERE
|
|
true
|
|
AND workspaceId
|
|
={{ String(workspaceId, '20202020-1c25-4d02-bf25-6aeccf7ea419', required=True) }}
|
|
AND webhookId = {{ String(webhookId, '5237a3bc-566d-4290-b951-96e91051f968', required=True) }}
|
|
AND timestamp >= parseDateTime64BestEffort({{ String(start, '2024-11-01T00:00:00.000Z') }}, 3)
|
|
AND timestamp < parseDateTime64BestEffort({{ String(end, '2024-11-02T00:00:00.000Z') }}, 3)
|
|
GROUP BY interval
|
|
ORDER BY interval
|
|
|
|
NODE endpoint
|
|
SQL >
|
|
%
|
|
SELECT formatDateTime(interval, '%FT%T.000%z') as start, success_count, failure_count
|
|
FROM selectIntervalByGranularity
|
|
LEFT JOIN timeSeriesWebhookData USING interval
|