Files
twenty/packages/twenty-tinybird/pipes/getServerlessFunctionErrorCount.pipe
Antoine Moreaux da527f1780 chore(ci): update Tinybird CI workflow (#11033)
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.
2025-03-21 16:32:24 +01:00

70 lines
2.3 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 %}
-- I decided to separate the error count and the success rate because I think we should maintain the bijection
-- between an endpoint and a graph in the front-end.
NODE timeSeriesServerlessFunctionErrorCountData
SQL >
%
SELECT
{% if granularity == "hour" %} toStartOfHour(timestamp)
{% else %} toDateTime64(toStartOfDay(timestamp), 3)
{% end %} AS interval,
uniqIf(*, success = false) as error_count
FROM serverlessFunctionEventMV
WHERE
true
AND workspaceId
={{ String(workspaceId, '20202020-1c25-4d02-bf25-6aeccf7ea419', required=True) }}
AND functionId = {{ String(functionId, 'ad018fc5-eace-4f7e-942f-929560a16459', 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, error_count
FROM selectIntervalByGranularity
LEFT JOIN timeSeriesServerlessFunctionErrorCountData USING interval
TYPE ENDPOINT