mirror of
https://github.com/FlipsideCrypto/solana-models.git
synced 2026-02-06 11:06:48 +00:00
* udf to grab program data logs from log messages * output table with encoded program data in tx logs * add comments * setup views and source * update tag * wip realtime view * wip * fix bad join * wip * decoded logs * wip * add event_type, index, inner_index and refactor existing * handle additional nested calls * add columns, add to SO * use backfill macro * wip * handle non-contiguous program log messaging * tmp upperbound * minor changes * reset child index when a new top level program is invoked * rebuild transaction logs program data * remove backfill * still need to use min price as backup * add post PR TODO * revert tmp full-refresh changes * add comment * add tests * update columns * add docs and tests, fix col name * update col description
81 lines
2.1 KiB
SQL
81 lines
2.1 KiB
SQL
{{ config(
|
|
materialized = 'incremental',
|
|
unique_key = "transaction_logs_program_data_id",
|
|
incremental_predicates = ["dynamic_range_predicate", "block_timestamp::date"],
|
|
cluster_by = ['block_timestamp::DATE','_inserted_timestamp::DATE'],
|
|
post_hook = enable_search_optimization('{{this.schema}}','{{this.identifier}}','ON EQUALITY(tx_id, program_id)'),
|
|
merge_exclude_columns = ["inserted_timestamp"],
|
|
tags = ['scheduled_core'],
|
|
) }}
|
|
|
|
/*
|
|
Adjusted backfill groupings on 2-XL
|
|
2022-08-12 7885521
|
|
2022-08-13 11137387
|
|
2022-08-15 351101483
|
|
2022-08-16 1427863755
|
|
|
|
2022-08-17 973393045
|
|
|
|
2022-08-18 827193734
|
|
|
|
2022-08-19 2346654908
|
|
|
|
2022-08-20 1281709341
|
|
|
|
2022-08-21 341131725
|
|
2022-08-22 13564732
|
|
2022-08-25 384899
|
|
2022-08-30 227067618
|
|
|
|
2022-08-31 2545287850
|
|
|
|
2022-09-01 1726232252
|
|
*/
|
|
|
|
|
|
WITH base AS (
|
|
SELECT
|
|
block_timestamp,
|
|
block_id,
|
|
tx_id,
|
|
succeeded,
|
|
silver.udf_get_logs_program_data(log_messages) AS program_data_logs,
|
|
_inserted_timestamp
|
|
FROM
|
|
{{ ref('silver__transactions') }}
|
|
WHERE
|
|
succeeded
|
|
AND log_messages IS NOT NULL
|
|
{% if is_incremental() %}
|
|
/*{% if execute %}
|
|
{{ get_batch_load_logic(this, 30, '2024-07-04') }}
|
|
{% endif %}*/
|
|
AND _inserted_timestamp >= (SELECT max(_inserted_timestamp) FROM {{ this }})
|
|
{% else %}
|
|
AND _inserted_timestamp::date BETWEEN '2022-08-12' AND '2022-09-01'
|
|
{% endif %}
|
|
)
|
|
SELECT
|
|
t.block_timestamp,
|
|
t.block_id,
|
|
t.tx_id,
|
|
t.succeeded,
|
|
l.value:index::int AS index,
|
|
l.value:inner_index::int AS inner_index,
|
|
l.index AS log_index,
|
|
l.value:program_id::string AS program_id,
|
|
l.value:event_type::string AS event_type,
|
|
l.value:data::string AS data,
|
|
l.value:error::string AS _udf_error,
|
|
_inserted_timestamp,
|
|
{{ dbt_utils.generate_surrogate_key(
|
|
['tx_id','index','log_index']
|
|
) }} AS transaction_logs_program_data_id,
|
|
SYSDATE() AS inserted_timestamp,
|
|
SYSDATE() AS modified_timestamp,
|
|
'{{ invocation_id }}' AS _invocation_id
|
|
FROM
|
|
base t
|
|
JOIN
|
|
table(flatten(program_data_logs)) l |