add/decoder-udf (#770)

add old decoder udf
This commit is contained in:
drethereum 2023-11-30 16:16:26 -07:00 committed by GitHub
parent c9069a32c8
commit fdf8ca1f1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 0 deletions

View File

@ -2,6 +2,9 @@
{% if var("UPDATE_UDFS_AND_SPS") %}
{% set sql %}
CREATE schema if NOT EXISTS silver;
{{ create_udf_transform_logs(
schema = 'silver'
) }}
{{ create_udtf_get_base_table(
schema = "streamline"
) }}

View File

@ -0,0 +1,34 @@
{% macro create_udf_transform_logs(schema) %}
create or replace function {{ schema }}.udf_transform_logs(decoded variant)
returns variant
language python
runtime_version = '3.8'
handler = 'transform' as $$
from copy import deepcopy
def transform_event(event: dict):
new_event = deepcopy(event)
if new_event.get("components"):
components = new_event.get("components")
for iy, y in enumerate(new_event["value"]):
for i, c in enumerate(components):
y[i] = {"value": y[i], **c}
new_event["value"][iy] = {z["name"]: z["value"] for z in y}
return new_event
else:
return event
def transform(events: list):
try:
results = [
transform_event(event) if event["decoded"] else event
for event in events["data"]
]
events["data"] = results
return events
except:
return events
$$;
{% endmacro %}