From c932f805175ecf7dabbd6b68be1c7fac603fb986 Mon Sep 17 00:00:00 2001 From: desmond-hui <97470747+desmond-hui@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:03:04 -0800 Subject: [PATCH] handle millisecond unix timestamps using snowflake funcs (#807) --- .../silver/validator/silver__snapshot_vote_accounts.sql | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/models/silver/validator/silver__snapshot_vote_accounts.sql b/models/silver/validator/silver__snapshot_vote_accounts.sql index f69cc530..a38ef03e 100644 --- a/models/silver/validator/silver__snapshot_vote_accounts.sql +++ b/models/silver/validator/silver__snapshot_vote_accounts.sql @@ -51,10 +51,11 @@ WITH base AS ( data :account :data :parsed :info :epochCredits :: ARRAY AS epoch_credits, data :account :data :parsed :info :lastTimestamp :slot :: NUMBER AS last_timestamp_slot, CASE - WHEN LENGTH(data :account :data :parsed :info :lastTimestamp :timestamp) > 10 - THEN LEFT(data :account :data :parsed :info :lastTimestamp :timestamp, LENGTH(data :account :data :parsed :info :lastTimestamp :timestamp) - 3) - ELSE data :account :data :parsed :info :lastTimestamp :timestamp - END :: timestamp_tz AS last_timestamp, + WHEN length(data :account :data :parsed :info :lastTimestamp :timestamp) > 10 THEN + to_timestamp(data :account :data :parsed :info :lastTimestamp :timestamp::int, 3)::timestamp_ntz -- some are being recorded in unix timestamp milliseconds scale + ELSE + to_timestamp(data :account :data :parsed :info :lastTimestamp :timestamp)::timestamp_ntz -- assume rest are unix timestamp seconds scale + END AS last_timestamp, data :account :data :parsed :info :nodePubkey :: STRING AS node_pubkey, data :account :data :parsed :info :priorVoters :: ARRAY AS prior_voters, data :account :data :parsed :info :rootSlot :: NUMBER AS root_slot,