mirror of
https://github.com/FlipsideCrypto/maya-models.git
synced 2026-02-06 11:06:46 +00:00
PR1
This commit is contained in:
parent
ba951adccf
commit
2e5ed62712
71
.github/workflows/dbt_docs_update.yml
vendored
Normal file
71
.github/workflows/dbt_docs_update.yml
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
name: docs_update
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
|
||||
env:
|
||||
USE_VARS: "${{ vars.USE_VARS }}"
|
||||
DBT_PROFILES_DIR: "${{ vars.DBT_PROFILES_DIR }}"
|
||||
DBT_VERSION: "${{ vars.DBT_VERSION }}"
|
||||
ACCOUNT: "${{ vars.ACCOUNT }}"
|
||||
ROLE: "${{ vars.ROLE }}"
|
||||
USER: "${{ vars.USER }}"
|
||||
PASSWORD: "${{ secrets.PASSWORD }}"
|
||||
REGION: "${{ vars.REGION }}"
|
||||
DATABASE: "${{ vars.DATABASE }}"
|
||||
WAREHOUSE: "${{ vars.WAREHOUSE }}"
|
||||
SCHEMA: "${{ vars.SCHEMA }}"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}
|
||||
|
||||
jobs:
|
||||
run_dbt_jobs:
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: workflow_prod
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "${{ vars.PYTHON_VERSION }}"
|
||||
cache: "pip"
|
||||
|
||||
- name: install dependencies
|
||||
run: |
|
||||
pip install -r requirements.txt
|
||||
dbt deps
|
||||
|
||||
- name: checkout docs branch
|
||||
run: |
|
||||
git checkout -B docs origin/main
|
||||
- name: generate dbt docs
|
||||
run: |
|
||||
dbt ls -t prod
|
||||
dbt docs generate --no-compile -t prod
|
||||
|
||||
- name: move files to docs directory
|
||||
run: |
|
||||
mkdir -p ./docs
|
||||
cp target/{catalog.json,manifest.json,index.html} docs/
|
||||
- name: clean up target directory
|
||||
run: dbt clean
|
||||
|
||||
- name: check for changes
|
||||
run: git status
|
||||
|
||||
- name: stage changed files
|
||||
run: git add .
|
||||
|
||||
- name: commit changed files
|
||||
run: |
|
||||
git config user.email "abc@xyz"
|
||||
git config user.name "github-actions"
|
||||
git commit -am "Auto-update docs"
|
||||
- name: push changes to docs
|
||||
run: |
|
||||
git push -f --set-upstream origin docs
|
||||
67
.github/workflows/dbt_run_adhoc.yml
vendored
Normal file
67
.github/workflows/dbt_run_adhoc.yml
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
name: dbt_run_adhoc
|
||||
run-name: dbt_run_adhoc
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
branches:
|
||||
- "main"
|
||||
inputs:
|
||||
environment:
|
||||
type: choice
|
||||
description: DBT Run Environment
|
||||
required: true
|
||||
options:
|
||||
- dev
|
||||
- prod
|
||||
default: dev
|
||||
warehouse:
|
||||
type: choice
|
||||
description: Snowflake warehouse
|
||||
required: true
|
||||
options:
|
||||
- DBT
|
||||
- DBT_CLOUD
|
||||
- DBT_EMERGENCY
|
||||
default: DBT
|
||||
dbt_command:
|
||||
type: string
|
||||
description: 'DBT Run Command'
|
||||
required: true
|
||||
|
||||
env:
|
||||
USE_VARS: "${{ vars.USE_VARS }}"
|
||||
DBT_PROFILES_DIR: "${{ vars.DBT_PROFILES_DIR }}"
|
||||
DBT_VERSION: "${{ vars.DBT_VERSION }}"
|
||||
ACCOUNT: "${{ vars.ACCOUNT }}"
|
||||
ROLE: "${{ vars.ROLE }}"
|
||||
USER: "${{ vars.USER }}"
|
||||
PASSWORD: "${{ secrets.PASSWORD }}"
|
||||
REGION: "${{ vars.REGION }}"
|
||||
DATABASE: "${{ vars.DATABASE }}"
|
||||
WAREHOUSE: "${{ inputs.WAREHOUSE }}"
|
||||
SCHEMA: "${{ vars.SCHEMA }}"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}
|
||||
|
||||
jobs:
|
||||
run_dbt_jobs:
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: workflow_${{ inputs.environment }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "${{ vars.PYTHON_VERSION }}"
|
||||
cache: "pip"
|
||||
|
||||
- name: install dependencies
|
||||
run: |
|
||||
pip install -r requirements.txt
|
||||
dbt deps
|
||||
- name: Run DBT Jobs
|
||||
run: |
|
||||
${{ inputs.dbt_command }}
|
||||
44
.github/workflows/dbt_run_dev_refresh.yml
vendored
Normal file
44
.github/workflows/dbt_run_dev_refresh.yml
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
name: dbt_run_dev_refresh
|
||||
run-name: dbt_run_dev_refresh
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
# schedule:
|
||||
# - cron: '27 8 * * *'
|
||||
|
||||
env:
|
||||
DBT_PROFILES_DIR: "${{ vars.DBT_PROFILES_DIR }}"
|
||||
|
||||
ACCOUNT: "${{ vars.ACCOUNT }}"
|
||||
ROLE: "${{ vars.ROLE }}"
|
||||
USER: "${{ vars.USER }}"
|
||||
PASSWORD: "${{ secrets.PASSWORD }}"
|
||||
REGION: "${{ vars.REGION }}"
|
||||
DATABASE: "${{ vars.DATABASE }}"
|
||||
WAREHOUSE: "${{ vars.WAREHOUSE }}"
|
||||
SCHEMA: "${{ vars.SCHEMA }}"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}
|
||||
|
||||
jobs:
|
||||
run_dbt_jobs:
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: workflow_prod
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "${{ vars.PYTHON_VERSION }}"
|
||||
cache: "pip"
|
||||
|
||||
- name: install dependencies
|
||||
run: |
|
||||
pip install -r requirements.txt
|
||||
dbt deps
|
||||
- name: Run DBT Jobs
|
||||
run: |
|
||||
dbt run-operation run_sp_create_prod_clone
|
||||
45
.github/workflows/dbt_run_incremental_core.yml
vendored
Normal file
45
.github/workflows/dbt_run_incremental_core.yml
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
name: dbt_run_incremental_core
|
||||
run-name: dbt_run_incremental_core
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
branches:
|
||||
- "main"
|
||||
|
||||
env:
|
||||
DBT_PROFILES_DIR: "${{ vars.DBT_PROFILES_DIR }}"
|
||||
|
||||
ACCOUNT: "${{ vars.ACCOUNT }}"
|
||||
ROLE: "${{ vars.ROLE }}"
|
||||
USER: "${{ vars.USER }}"
|
||||
PASSWORD: "${{ secrets.PASSWORD }}"
|
||||
REGION: "${{ vars.REGION }}"
|
||||
DATABASE: "${{ vars.DATABASE }}"
|
||||
WAREHOUSE: "${{ vars.WAREHOUSE }}"
|
||||
SCHEMA: "${{ vars.SCHEMA }}"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}
|
||||
|
||||
jobs:
|
||||
run_dbt_jobs:
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: workflow_prod
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "${{ vars.PYTHON_VERSION }}"
|
||||
cache: "pip"
|
||||
|
||||
- name: install dependencies
|
||||
run: |
|
||||
pip install -r requirements.txt
|
||||
dbt deps
|
||||
- name: Run DBT Jobs
|
||||
run: |
|
||||
dbt run -s "maya_models,tag:scheduled_core"
|
||||
|
||||
20
.gitignore
vendored
Normal file
20
.gitignore
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
target/
|
||||
dbt_modules/
|
||||
# newer versions of dbt use this directory instead of dbt_modules for test dependencies
|
||||
dbt_packages/
|
||||
logs/
|
||||
|
||||
.venv/
|
||||
.python-version
|
||||
dbt-env/
|
||||
venv/
|
||||
|
||||
# Visual Studio Code files
|
||||
*/.vscode
|
||||
*.code-workspace
|
||||
.history/
|
||||
**/.DS_Store
|
||||
.vscode/
|
||||
.env
|
||||
.DS_Store
|
||||
.user.yml
|
||||
74
README.md
Normal file
74
README.md
Normal file
@ -0,0 +1,74 @@
|
||||
## Profile Set Up
|
||||
|
||||
#### Use the following within profiles.yml
|
||||
----
|
||||
|
||||
```yml
|
||||
maya:
|
||||
target: dev
|
||||
outputs:
|
||||
dev:
|
||||
type: snowflake
|
||||
account: <ACCOUNT>
|
||||
role: <ROLE>
|
||||
user: <USERNAME>
|
||||
password: <PASSWORD>
|
||||
region: <REGION>
|
||||
database: maya_DEV
|
||||
warehouse: <WAREHOUSE>
|
||||
schema: silver
|
||||
threads: 4
|
||||
client_session_keep_alive: False
|
||||
query_tag: <TAG>
|
||||
```
|
||||
|
||||
### Resources:
|
||||
- Learn more about dbt [in the docs](https://docs.getdbt.com/docs/introduction)
|
||||
- Check out [Discourse](https://discourse.getdbt.com/) for commonly asked questions and answers
|
||||
- Join the [chat](https://community.getdbt.com/) on Slack for live discussions and support
|
||||
- Find [dbt events](https://events.getdbt.com) near you
|
||||
- Check out [the blog](https://blog.getdbt.com/) for the latest news on dbt's development and best practices
|
||||
|
||||
- Check out [the blog](https://blog.getdbt.com/) for the latest news on dbt's development and best practices
|
||||
|
||||
## Applying Model Tags
|
||||
|
||||
### Database / Schema level tags
|
||||
|
||||
Database and schema tags are applied via the `add_database_or_schema_tags` macro. These tags are inherited by their downstream objects. To add/modify tags call the appropriate tag set function within the macro.
|
||||
|
||||
```
|
||||
{{ set_database_tag_value('SOME_DATABASE_TAG_KEY','SOME_DATABASE_TAG_VALUE') }}
|
||||
{{ set_schema_tag_value('SOME_SCHEMA_TAG_KEY','SOME_SCHEMA_TAG_VALUE') }}
|
||||
```
|
||||
|
||||
### Model tags
|
||||
|
||||
To add/update a model's snowflake tags, add/modify the `meta` model property under `config`. Only table level tags are supported at this time via DBT.
|
||||
|
||||
```
|
||||
{{ config(
|
||||
...,
|
||||
meta={
|
||||
'database_tags':{
|
||||
'table': {
|
||||
'PURPOSE': 'SOME_PURPOSE'
|
||||
}
|
||||
}
|
||||
},
|
||||
...
|
||||
) }}
|
||||
```
|
||||
|
||||
By default, model tags are not pushed to snowflake on each load. You can push a tag update for a model by specifying the `UPDATE_SNOWFLAKE_TAGS` project variable during a run.
|
||||
|
||||
```
|
||||
dbt run --var '{"UPDATE_SNOWFLAKE_TAGS":True}' -s models/core/core__fact_swaps.sql
|
||||
```
|
||||
|
||||
### Querying for existing tags on a model in snowflake
|
||||
|
||||
```
|
||||
select *
|
||||
from table(maya.information_schema.tag_references('maya.core.fact_blocks', 'table'));
|
||||
```
|
||||
73
dbt_project.yml
Normal file
73
dbt_project.yml
Normal file
@ -0,0 +1,73 @@
|
||||
# Name your project! Project names should contain only lowercase characters
|
||||
# and underscores. A good package name should reflect your organization's
|
||||
# name or the intended use of these models
|
||||
name: "maya_models"
|
||||
version: "1.0.0"
|
||||
config-version: 2
|
||||
|
||||
require-dbt-version: ">=1.8.0"
|
||||
|
||||
# This setting configures which "profile" dbt uses for this project.
|
||||
profile: "maya"
|
||||
|
||||
# These configurations specify where dbt should look for different types of files.
|
||||
# The `model-paths` config, for example, states that models in this project can be
|
||||
# found in the "models/" directory. You probably won't need to change these!
|
||||
model-paths: ["models"]
|
||||
analysis-paths: ["analysis"]
|
||||
test-paths: ["tests"]
|
||||
seed-paths: ["data"]
|
||||
macro-paths: ["macros"]
|
||||
snapshot-paths: ["snapshots"]
|
||||
|
||||
target-path: "target" # directory which will store compiled SQL files
|
||||
clean-targets: # directories to be removed by `dbt clean`
|
||||
- "target"
|
||||
- "dbt_modules"
|
||||
- "dbt_packages"
|
||||
|
||||
# Configuring models
|
||||
# Full documentation: https://docs.getdbt.com/docs/configuring-models
|
||||
|
||||
# In this example config, we tell dbt to build all models in the example/ directory
|
||||
# as tables. These settings can be overridden in the individual model files
|
||||
# using the `{{ config(...) }}` macro.
|
||||
models:
|
||||
+copy_grants: true
|
||||
+persist_docs:
|
||||
relation: true
|
||||
columns: true
|
||||
+on_schema_change: "append_new_columns"
|
||||
livequery_models:
|
||||
deploy:
|
||||
core:
|
||||
materialized: ephemeral
|
||||
|
||||
|
||||
data_tests:
|
||||
maya_models: # replace with the name of the chain
|
||||
+store_failures: true # all tests
|
||||
|
||||
on-run-start:
|
||||
- '{{create_sps()}}'
|
||||
- '{{create_udfs()}}'
|
||||
|
||||
|
||||
dispatch:
|
||||
- macro_namespace: dbt
|
||||
search_order:
|
||||
- maya-models
|
||||
- dbt_snowflake_query_tags
|
||||
- dbt
|
||||
|
||||
query-comment:
|
||||
comment: '{{ dbt_snowflake_query_tags.get_query_comment(node) }}'
|
||||
append: true # Snowflake removes prefixed comments.
|
||||
|
||||
vars:
|
||||
"dbt_date:time_zone": GMT
|
||||
OBSERV_FULL_TEST: False
|
||||
START_GHA_TASKS: False
|
||||
UPDATE_SNOWFLAKE_TAGS: True
|
||||
UPDATE_UDFS_AND_SPS: True
|
||||
|
||||
0
docs/.gitkeep
Normal file
0
docs/.gitkeep
Normal file
0
macros/.gitkeep
Normal file
0
macros/.gitkeep
Normal file
7
macros/create_sps.sql
Normal file
7
macros/create_sps.sql
Normal file
@ -0,0 +1,7 @@
|
||||
{% macro create_sps() %}
|
||||
{% if target.database == 'MAYA' %}
|
||||
CREATE schema IF NOT EXISTS _internal;
|
||||
{{ sp_create_prod_clone('_internal') }};
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
{% endmacro %}
|
||||
2
macros/create_udfs.sql
Normal file
2
macros/create_udfs.sql
Normal file
@ -0,0 +1,2 @@
|
||||
{% macro create_udfs() %}
|
||||
{% endmacro %}
|
||||
33
macros/custom_naming_macros.sql
Normal file
33
macros/custom_naming_macros.sql
Normal file
@ -0,0 +1,33 @@
|
||||
{% macro generate_schema_name(
|
||||
custom_schema_name = none,
|
||||
node = none
|
||||
) -%}
|
||||
{% set node_name = node.name %}
|
||||
{% set split_name = node_name.split('__') %}
|
||||
{{ split_name [0] | trim }}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro generate_alias_name(
|
||||
custom_alias_name = none,
|
||||
node = none
|
||||
) -%}
|
||||
{% set node_name = node.name %}
|
||||
{% set split_name = node_name.split('__') %}
|
||||
{% if split_name | length < 2 %}
|
||||
{{ split_name [0] | trim }}
|
||||
{% else %}
|
||||
{{ split_name [1] | trim }}
|
||||
{% endif %}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro generate_tmp_view_name(model_name) -%}
|
||||
{% set node_name = model_name.name %}
|
||||
{% set split_name = node_name.split('__') %}
|
||||
{{ target.database ~ '.' ~ split_name[0] ~ '.' ~ split_name [1] ~ '__dbt_tmp' | trim }}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro generate_view_name(model_name) -%}
|
||||
{% set node_name = model_name.name %}
|
||||
{% set split_name = node_name.split('__') %}
|
||||
{{ target.database ~ '.' ~ split_name[0] ~ '.' ~ split_name [1] | trim }}
|
||||
{%- endmacro %}
|
||||
11
macros/custom_query_tag.sql
Normal file
11
macros/custom_query_tag.sql
Normal file
@ -0,0 +1,11 @@
|
||||
{% macro set_query_tag() -%}
|
||||
{% set new_json = {"repo":project_name, "object":this.table, "profile":target.profile_name, "env":target.name, "existing_tag":get_current_query_tag() } %}
|
||||
{% set new_query_tag = tojson(new_json) | as_text %}
|
||||
{% if new_query_tag %}
|
||||
{% set original_query_tag = get_current_query_tag() %}
|
||||
{{ log("Setting query_tag to '" ~ new_query_tag ~ "'. Will reset to '" ~ original_query_tag ~ "' after materialization.") }}
|
||||
{% do run_query("alter session set query_tag = '{}'".format(new_query_tag)) %}
|
||||
{{ return(original_query_tag)}}
|
||||
{% endif %}
|
||||
{{ return(none)}}
|
||||
{% endmacro %}
|
||||
30
macros/dbt/get_merge.sql
Normal file
30
macros/dbt/get_merge.sql
Normal file
@ -0,0 +1,30 @@
|
||||
-- incremental_strategy="merge"
|
||||
{% macro get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}
|
||||
{% set merge_sql = fsc_utils.get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) %}
|
||||
{{ return(merge_sql) }}
|
||||
{% endmacro %}
|
||||
|
||||
-- incremental_strategy="delete+insert"
|
||||
{% macro get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}
|
||||
{% set predicate_override = "" %}
|
||||
-- get the min value of column
|
||||
{% if incremental_predicates[0] == "min_value_predicate" %}
|
||||
{% set min_column_name = incremental_predicates[1] %}
|
||||
{% set query %}
|
||||
select min({{ min_column_name }}) from {{ source }}
|
||||
{% endset %}
|
||||
{% set min_block = run_query(query).columns[0][0] %}
|
||||
|
||||
{% if min_block is not none %}
|
||||
{% set predicate_override %}
|
||||
round({{ target }}.{{ min_column_name }},-5) >= round({{ min_block }},-5)
|
||||
{% endset %}
|
||||
{% else %}
|
||||
{% set predicate_override = "1=1" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% set predicates = [predicate_override] + incremental_predicates[2:] if predicate_override else incremental_predicates %}
|
||||
-- standard delete+insert from here
|
||||
{% set merge_sql = dbt.get_delete_insert_merge_sql(target, source, unique_key, dest_columns, predicates) %}
|
||||
{{ return(merge_sql) }}
|
||||
{% endmacro %}
|
||||
4
macros/dbt/get_tmp_relation_type.sql
Normal file
4
macros/dbt/get_tmp_relation_type.sql
Normal file
@ -0,0 +1,4 @@
|
||||
{% macro dbt_snowflake_get_tmp_relation_type(strategy, unique_key, language) %}
|
||||
-- always table
|
||||
{{ return('table') }}
|
||||
{% endmacro %}
|
||||
10
macros/run_sp_create_prod_clone.sql
Normal file
10
macros/run_sp_create_prod_clone.sql
Normal file
@ -0,0 +1,10 @@
|
||||
{% macro run_sp_create_prod_clone() %}
|
||||
{% set clone_query %}
|
||||
call maya._internal.create_prod_clone(
|
||||
'maya',
|
||||
'maya_dev',
|
||||
'internal_dev'
|
||||
);
|
||||
{% endset %}
|
||||
{% do run_query(clone_query) %}
|
||||
{% endmacro %}
|
||||
49
macros/sp_create_prod_clone.sql
Normal file
49
macros/sp_create_prod_clone.sql
Normal file
@ -0,0 +1,49 @@
|
||||
{% macro sp_create_prod_clone(target_schema) -%}
|
||||
|
||||
create or replace procedure {{ target_schema }}.create_prod_clone(source_db_name string, destination_db_name string, role_name string)
|
||||
returns boolean
|
||||
language javascript
|
||||
execute as caller
|
||||
as
|
||||
$$
|
||||
snowflake.execute({sqlText: `BEGIN TRANSACTION;`});
|
||||
try {
|
||||
snowflake.execute({sqlText: `CREATE OR REPLACE DATABASE ${DESTINATION_DB_NAME} CLONE ${SOURCE_DB_NAME}`});
|
||||
snowflake.execute({sqlText: `DROP SCHEMA IF EXISTS ${DESTINATION_DB_NAME}._INTERNAL`}); /* this only needs to be in prod */
|
||||
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON ALL SCHEMAS IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON ALL FUNCTIONS IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON ALL PROCEDURES IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON ALL VIEWS IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON ALL STAGES IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON ALL TABLES IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`});
|
||||
snowflake.execute({sqlText: `REVOKE OWNERSHIP ON FUTURE FUNCTIONS IN DATABASE ${DESTINATION_DB_NAME} FROM ROLE DBT_CLOUD_MAYA;`});
|
||||
snowflake.execute({sqlText: `REVOKE OWNERSHIP ON FUTURE PROCEDURES IN DATABASE ${DESTINATION_DB_NAME} FROM ROLE DBT_CLOUD_MAYA;`});
|
||||
snowflake.execute({sqlText: `REVOKE OWNERSHIP ON FUTURE VIEWS IN DATABASE ${DESTINATION_DB_NAME} FROM ROLE DBT_CLOUD_MAYA;`});
|
||||
snowflake.execute({sqlText: `REVOKE OWNERSHIP ON FUTURE STAGES IN DATABASE ${DESTINATION_DB_NAME} FROM ROLE DBT_CLOUD_MAYA;`});
|
||||
snowflake.execute({sqlText: `REVOKE OWNERSHIP ON FUTURE TABLES IN DATABASE ${DESTINATION_DB_NAME} FROM ROLE DBT_CLOUD_MAYA;`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON FUTURE FUNCTIONS IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME};`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON FUTURE PROCEDURES IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME};`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON FUTURE VIEWS IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME};`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON FUTURE STAGES IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME};`});
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON FUTURE TABLES IN DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME};`});
|
||||
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON DATABASE ${DESTINATION_DB_NAME} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`})
|
||||
|
||||
var existing_tags = snowflake.execute({sqlText: `SHOW TAGS IN DATABASE ${DESTINATION_DB_NAME};`});
|
||||
while (existing_tags.next()) {
|
||||
var schema = existing_tags.getColumnValue(4);
|
||||
var tag_name = existing_tags.getColumnValue(2)
|
||||
snowflake.execute({sqlText: `GRANT OWNERSHIP ON TAG ${DESTINATION_DB_NAME}.${schema}.${tag_name} TO ROLE ${ROLE_NAME} COPY CURRENT GRANTS;`});
|
||||
}
|
||||
|
||||
snowflake.execute({sqlText: `COMMIT;`});
|
||||
} catch (err) {
|
||||
snowflake.execute({sqlText: `ROLLBACK;`});
|
||||
throw(err);
|
||||
}
|
||||
|
||||
return true
|
||||
$$
|
||||
|
||||
{%- endmacro %}
|
||||
6
macros/tags/add_database_or_schema_tags.sql
Normal file
6
macros/tags/add_database_or_schema_tags.sql
Normal file
@ -0,0 +1,6 @@
|
||||
{% macro add_database_or_schema_tags() %}
|
||||
{{ set_database_tag_value(
|
||||
'BLOCKCHAIN_NAME',
|
||||
'MAYA'
|
||||
) }}
|
||||
{% endmacro %}
|
||||
127
macros/tags/snowflake_tagging.sql
Normal file
127
macros/tags/snowflake_tagging.sql
Normal file
@ -0,0 +1,127 @@
|
||||
{% macro apply_meta_as_tags(results) %}
|
||||
{% if var("UPDATE_SNOWFLAKE_TAGS") %}
|
||||
{{ log('apply_meta_as_tags', info=False) }}
|
||||
{{ log(results, info=False) }}
|
||||
{% if execute %}
|
||||
|
||||
{%- set tags_by_schema = {} -%}
|
||||
{% for res in results -%}
|
||||
{% if res.node.meta.database_tags %}
|
||||
|
||||
{%- set model_database = res.node.database -%}
|
||||
{%- set model_schema = res.node.schema -%}
|
||||
{%- set model_schema_full = model_database+'.'+model_schema -%}
|
||||
{%- set model_alias = res.node.alias -%}
|
||||
|
||||
{% if model_schema_full not in tags_by_schema.keys() %}
|
||||
{{ log('need to fetch tags for schema '+model_schema_full, info=False) }}
|
||||
{%- call statement('main', fetch_result=True) -%}
|
||||
show tags in {{model_database}}.{{model_schema}}
|
||||
{%- endcall -%}
|
||||
{%- set _ = tags_by_schema.update({model_schema_full: load_result('main')['table'].columns.get('name').values()|list}) -%}
|
||||
{{ log('Added tags to cache', info=False) }}
|
||||
{% else %}
|
||||
{{ log('already have tag info for schema', info=False) }}
|
||||
{% endif %}
|
||||
|
||||
{%- set current_tags_in_schema = tags_by_schema[model_schema_full] -%}
|
||||
{{ log('current_tags_in_schema:', info=False) }}
|
||||
{{ log(current_tags_in_schema, info=False) }}
|
||||
{{ log("========== Processing tags for "+model_schema_full+"."+model_alias+" ==========", info=False) }}
|
||||
|
||||
{% set line -%}
|
||||
node: {{ res.node.unique_id }}; status: {{ res.status }} (message: {{ res.message }})
|
||||
node full: {{ res.node}}
|
||||
meta: {{ res.node.meta}}
|
||||
materialized: {{ res.node.config.materialized }}
|
||||
{%- endset %}
|
||||
{{ log(line, info=False) }}
|
||||
|
||||
{%- call statement('main', fetch_result=True) -%}
|
||||
select LEVEL,UPPER(TAG_NAME) as TAG_NAME,TAG_VALUE from table(information_schema.tag_references_all_columns('{{model_schema}}.{{model_alias}}', 'table'))
|
||||
{%- endcall -%}
|
||||
{%- set existing_tags_for_table = load_result('main')['data'] -%}
|
||||
{{ log('Existing tags for table:', info=False) }}
|
||||
{{ log(existing_tags_for_table, info=False) }}
|
||||
|
||||
{{ log('--', info=False) }}
|
||||
{% for table_tag in res.node.meta.database_tags.table %}
|
||||
|
||||
{{ create_tag_if_missing(current_tags_in_schema,table_tag|upper) }}
|
||||
{% set desired_tag_value = res.node.meta.database_tags.table[table_tag] %}
|
||||
|
||||
{{set_table_tag_value_if_different(model_schema,model_alias,table_tag,desired_tag_value,existing_tags_for_table)}}
|
||||
{% endfor %}
|
||||
{{ log("========== Finished processing tags for "+model_alias+" ==========", info=False) }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% macro create_tag_if_missing(all_tag_names,table_tag) %}
|
||||
{% if table_tag not in all_tag_names %}
|
||||
{{ log('Creating missing tag '+table_tag, info=False) }}
|
||||
{%- call statement('main', fetch_result=True) -%}
|
||||
create tag if not exists silver.{{table_tag}}
|
||||
{%- endcall -%}
|
||||
{{ log(load_result('main').data, info=False) }}
|
||||
{% else %}
|
||||
{{ log('Tag already exists: '+table_tag, info=False) }}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro set_table_tag_value_if_different(model_schema,table_name,tag_name,desired_tag_value,existing_tags) %}
|
||||
{{ log('Ensuring tag '+tag_name+' has value '+desired_tag_value+' at table level', info=False) }}
|
||||
{%- set existing_tag_for_table = existing_tags|selectattr('0','equalto','TABLE')|selectattr('1','equalto',tag_name|upper)|list -%}
|
||||
{{ log('Filtered tags for table:', info=False) }}
|
||||
{{ log(existing_tag_for_table[0], info=False) }}
|
||||
{% if existing_tag_for_table|length > 0 and existing_tag_for_table[0][2]==desired_tag_value %}
|
||||
{{ log('Correct tag value already exists', info=False) }}
|
||||
{% else %}
|
||||
{{ log('Setting tag value for '+tag_name+' to value '+desired_tag_value, info=False) }}
|
||||
{%- call statement('main', fetch_result=True) -%}
|
||||
alter table {{model_schema}}.{{table_name}} set tag {{tag_name}} = '{{desired_tag_value}}'
|
||||
{%- endcall -%}
|
||||
{{ log(load_result('main').data, info=False) }}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro set_column_tag_value_if_different(table_name,column_name,tag_name,desired_tag_value,existing_tags) %}
|
||||
{{ log('Ensuring tag '+tag_name+' has value '+desired_tag_value+' at column level', info=False) }}
|
||||
{%- set existing_tag_for_column = existing_tags|selectattr('0','equalto','COLUMN')|selectattr('1','equalto',tag_name|upper)|list -%}
|
||||
{{ log('Filtered tags for column:', info=False) }}
|
||||
{{ log(existing_tag_for_column[0], info=False) }}
|
||||
{% if existing_tag_for_column|length > 0 and existing_tag_for_column[0][2]==desired_tag_value %}
|
||||
{{ log('Correct tag value already exists', info=False) }}
|
||||
{% else %}
|
||||
{{ log('Setting tag value for '+tag_name+' to value '+desired_tag_value, info=False) }}
|
||||
{%- call statement('main', fetch_result=True) -%}
|
||||
alter table {{table_name}} modify column {{column_name}} set tag {{tag_name}} = '{{desired_tag_value}}'
|
||||
{%- endcall -%}
|
||||
{{ log(load_result('main').data, info=False) }}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro set_database_tag_value(tag_name,tag_value) %}
|
||||
{% set query %}
|
||||
create tag if not exists silver.{{tag_name}}
|
||||
{% endset %}
|
||||
{% do run_query(query) %}
|
||||
{% set query %}
|
||||
alter database {{target.database}} set tag {{target.database}}.silver.{{tag_name}} = '{{tag_value}}'
|
||||
{% endset %}
|
||||
{% do run_query(query) %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro set_schema_tag_value(target_schema,tag_name,tag_value) %}
|
||||
{% set query %}
|
||||
create tag if not exists silver.{{tag_name}}
|
||||
{% endset %}
|
||||
{% do run_query(query) %}
|
||||
{% set query %}
|
||||
alter schema {{target.database}}.{{target_schema}} set tag {{target.database}}.silver.{{tag_name}} = '{{tag_value}}'
|
||||
{% endset %}
|
||||
{% do run_query(query) %}
|
||||
{% endmacro %}
|
||||
29
macros/tests/compare_model_subset.sql
Normal file
29
macros/tests/compare_model_subset.sql
Normal file
@ -0,0 +1,29 @@
|
||||
{% test compare_model_subset(model, compare_model, compare_columns, model_condition) %}
|
||||
|
||||
{% set compare_cols_csv = compare_columns | join(', ') %}
|
||||
|
||||
with a as (
|
||||
select {{compare_cols_csv}} from {{ model }}
|
||||
{{ model_condition }}
|
||||
),
|
||||
b as (
|
||||
select {{compare_cols_csv}} from {{ compare_model }}
|
||||
),
|
||||
a_minus_b as (
|
||||
select * from a
|
||||
except
|
||||
select * from b
|
||||
),
|
||||
b_minus_a as (
|
||||
select * from b
|
||||
except
|
||||
select * from a
|
||||
),
|
||||
unioned as (
|
||||
select 'in_actual_not_in_expected' as which_diff, a_minus_b.* from a_minus_b
|
||||
union all
|
||||
select 'in_expected_not_in_actual' as which_diff, b_minus_a.* from b_minus_a
|
||||
)
|
||||
select * from unioned
|
||||
|
||||
{% endtest %}
|
||||
37
macros/tests/sequence_gaps.sql
Normal file
37
macros/tests/sequence_gaps.sql
Normal file
@ -0,0 +1,37 @@
|
||||
{% macro sequence_gaps(
|
||||
table,
|
||||
partition_by,
|
||||
column
|
||||
) %}
|
||||
{%- set partition_sql = partition_by | join(", ") -%}
|
||||
{%- set previous_column = "prev_" ~ column -%}
|
||||
WITH source AS (
|
||||
SELECT
|
||||
{{ partition_sql + "," if partition_sql }}
|
||||
{{ column }},
|
||||
LAG(
|
||||
{{ column }},
|
||||
1
|
||||
) over (
|
||||
{{ "PARTITION BY " ~ partition_sql if partition_sql }}
|
||||
ORDER BY
|
||||
{{ column }} ASC
|
||||
) AS {{ previous_column }}
|
||||
FROM
|
||||
{{ table }}
|
||||
WHERE
|
||||
block_timestamp::date <= current_date - 1
|
||||
)
|
||||
SELECT
|
||||
{{ partition_sql + "," if partition_sql }}
|
||||
{{ previous_column }},
|
||||
{{ column }},
|
||||
{{ column }} - {{ previous_column }}
|
||||
- 1 AS gap
|
||||
FROM
|
||||
source
|
||||
WHERE
|
||||
{{ column }} - {{ previous_column }} <> 1
|
||||
ORDER BY
|
||||
gap DESC
|
||||
{% endmacro %}
|
||||
428
maya mid.csv
Normal file
428
maya mid.csv
Normal file
@ -0,0 +1,428 @@
|
||||
TABLE_NAME,COLUMN_NAME
|
||||
MIDGARD_BLOCK_LOG,__HEVO__DATABASE_NAME
|
||||
MIDGARD_STAKE_EVENTS,CACAO_ADDR
|
||||
MIDGARD_FEE_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,BLOCK_TIMESTAMP
|
||||
MIDGARD_REFUND_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SLASH_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_CACAO_PRICE,CACAO_PRICE_E8
|
||||
MIDGARD_ACTIVE_VAULT_EVENTS,EVENT_ID
|
||||
MIDGARD_SLASH_EVENTS,ASSET_E8
|
||||
MIDGARD_REFUND_EVENTS,ASSET
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SLASH_POINTS_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,FROM_ADDR
|
||||
MIDGARD_OUTBOUND_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,SAVER_E8
|
||||
MIDGARD_BOND_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,LAST_HEIGHT
|
||||
MIDGARD_OUTBOUND_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SET_MIMIR_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,FAILED_SWAP_REASONS
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,EVENT_ID
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,ASSET_E8
|
||||
MIDGARD_CONSTANTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,EVENT_ID
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SLASH_POINTS_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_OUTBOUND_EVENTS,IN_TX
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,EVENT_ID
|
||||
MIDGARD_SWAP_EVENTS,EVENT_ID
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,NODE_ADDR
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_WITHDRAW_EVENTS,FROM_ADDR
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_SET_VERSION_EVENTS,VERSION
|
||||
MIDGARD_REFUND_EVENTS,TO_ADDR
|
||||
MIDGARD_STAKE_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,EVENT_ID
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,POOL
|
||||
MIDGARD_WITHDRAW_EVENTS,_EMIT_ASSET_IN_CACAO_E8
|
||||
MIDGARD_TRANSFER_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_CACAO_PRICE,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_CACAO_PRICE,__HEVO__INGESTED_AT
|
||||
MIDGARD_SET_MIMIR_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_RESERVE_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_CONSTANTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,TX_ID
|
||||
MIDGARD_INACTIVE_VAULT_EVENTS,ADD_ASGARD_ADDR
|
||||
MIDGARD_CACAO_PRICE,BLOCK_TIMESTAMP
|
||||
MIDGARD_NEW_NODE_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_BLOCK_LOG,__HEVO__INGESTED_AT
|
||||
MIDGARD_BOND_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,COUNT
|
||||
MIDGARD_BOND_EVENTS,E8
|
||||
MIDGARD_RESERVE_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_GAS_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SWAP_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,CHAIN
|
||||
MIDGARD_ADD_EVENTS,CACAO_E8
|
||||
MIDGARD_ACTIVE_VAULT_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SWAP_EVENTS,TO_E8
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,AFFILIATE_BPS
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_CONSTANTS,VALUE
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,NAME
|
||||
MIDGARD_BLOCK_LOG,__HEVO__LOADED_AT
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,__HEVO__LOADED_AT
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,__HEVO__DATABASE_NAME
|
||||
MIDGARD_ADD_EVENTS,ASSET_E8
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,QUANTITY
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_STAKE_EVENTS,POOL
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,OWNER
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SLASH_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_WITHDRAW_EVENTS,POOL
|
||||
MIDGARD_STAKE_EVENTS,ASSET_TX
|
||||
MIDGARD_SWAP_EVENTS,LIQ_FEE_IN_CACAO_E8
|
||||
MIDGARD_BOND_EVENTS,MEMO
|
||||
MIDGARD_SEND_MESSAGES,RAW_LOG
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,IN_ASSET
|
||||
MIDGARD_STAKE_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_BOND_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SET_VERSION_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,REASON
|
||||
MIDGARD_REWARDS_EVENTS,EVENT_ID
|
||||
MIDGARD_FEE_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_REFUND_EVENTS,ASSET_E8
|
||||
MIDGARD_POOL_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_REFUND_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,ASSET_E8
|
||||
MIDGARD_SWAP_EVENTS,TO_E8_MIN
|
||||
MIDGARD_SEND_MESSAGES,FROM_ADDR
|
||||
MIDGARD_STAKE_EVENTS,STAKE_UNITS
|
||||
MIDGARD_ADD_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_OUTBOUND_EVENTS,MEMO
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_SET_MIMIR_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_NEW_NODE_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,ASSET_AMT
|
||||
MIDGARD_GAS_EVENTS,TX_COUNT
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SWAP_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,NODE_ADDR
|
||||
MIDGARD_OUTBOUND_EVENTS,TO_ADDR
|
||||
MIDGARD_SLASH_POINTS_EVENTS,SLASH_POINTS
|
||||
MIDGARD_ADD_EVENTS,EVENT_ID
|
||||
MIDGARD_SEND_MESSAGES,TX_ID
|
||||
MIDGARD_SEND_MESSAGES,MEMO
|
||||
MIDGARD_FEE_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,OUT_ASSET
|
||||
MIDGARD_SWAP_EVENTS,TO_ASSET
|
||||
MIDGARD_NEW_NODE_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_RESERVE_EVENTS,EVENT_ID
|
||||
MIDGARD_WITHDRAW_EVENTS,ASYMMETRY
|
||||
MIDGARD_REFUND_EVENTS,ASSET_2ND
|
||||
MIDGARD_OUTBOUND_EVENTS,INTERNAL
|
||||
MIDGARD_INACTIVE_VAULT_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,ASSET
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_REFUND_EVENTS,ASSET_2ND_E8
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,__HEVO__LOADED_AT
|
||||
MIDGARD_BLOCK_LOG,HEIGHT
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,__HEVO__INGESTED_AT
|
||||
MIDGARD_CACAO_PRICE,__HEVO__DATABASE_NAME
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,__HEVO__INGESTED_AT
|
||||
MIDGARD_NEW_NODE_EVENTS,EVENT_ID
|
||||
MIDGARD_REFUND_EVENTS,CHAIN
|
||||
MIDGARD_SWAP_EVENTS,POOL
|
||||
MIDGARD_OUTBOUND_EVENTS,EVENT_ID
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,POOL
|
||||
MIDGARD_STAKE_EVENTS,ASSET_E8
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,NODE_ADDR
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,REGISTRATION_FEE_E8
|
||||
MIDGARD_SWAP_EVENTS,_STREAMING
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,LP_ADDRESS
|
||||
MIDGARD_WITHDRAW_EVENTS,IMP_LOSS_PROTECTION_E8
|
||||
MIDGARD_SWAP_EVENTS,FROM_ADDR
|
||||
MIDGARD_SET_MIMIR_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SEND_MESSAGES,__HEVO__INGESTED_AT
|
||||
MIDGARD_POOL_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_ACTIVE_VAULT_EVENTS,ADD_ASGARD_ADDR
|
||||
MIDGARD_CACAO_PRICE,__HEVO__LOADED_AT
|
||||
MIDGARD_GAS_EVENTS,EVENT_ID
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,SENDER
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,EVENT_ID
|
||||
MIDGARD_POOL_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SLASH_EVENTS,ASSET
|
||||
MIDGARD_REWARDS_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,ASSET_ADDR
|
||||
MIDGARD_BOND_EVENTS,TX
|
||||
MIDGARD_WITHDRAW_EVENTS,EMIT_CACAO_E8
|
||||
MIDGARD_ADD_EVENTS,FROM_ADDR
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,MEMO
|
||||
MIDGARD_SEND_MESSAGES,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_REFUND_EVENTS,TX
|
||||
MIDGARD_STAKE_EVENTS,CACAO_E8
|
||||
MIDGARD_REFUND_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_INACTIVE_VAULT_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_ADD_EVENTS,TO_ADDR
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,CODE
|
||||
MIDGARD_CONSTANTS,KEY
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_WITHDRAW_EVENTS,BASIS_POINTS
|
||||
MIDGARD_OUTBOUND_EVENTS,TX
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,EXPIRE
|
||||
MIDGARD_RESERVE_EVENTS,E8
|
||||
MIDGARD_INACTIVE_VAULT_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_OUTBOUND_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_POOL_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_GAS_EVENTS,ASSET_E8
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,CACAO_TX
|
||||
MIDGARD_ADD_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_WITHDRAW_EVENTS,MEMO
|
||||
MIDGARD_RESERVE_EVENTS,ASSET
|
||||
MIDGARD_BLOCK_LOG,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,TX_ID
|
||||
MIDGARD_SWAP_EVENTS,LIQ_FEE_E8
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,PREFERRED_ASSET
|
||||
MIDGARD_ADD_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_INACTIVE_VAULT_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_ADD_EVENTS,CHAIN
|
||||
MIDGARD_SWAP_EVENTS,STREAMING_COUNT
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_POOL_EVENTS,ASSET
|
||||
MIDGARD_SET_VERSION_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_RESERVE_EVENTS,CHAIN
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,CACAO_ADD
|
||||
MIDGARD_REWARDS_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_TRANSFER_EVENTS,AMOUNT_E8
|
||||
MIDGARD_SWAP_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,FUND_AMOUNT_E8
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,__HEVO__DATABASE_NAME
|
||||
MIDGARD_REWARDS_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,KEY
|
||||
MIDGARD_BOND_EVENTS,CHAIN
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,BOND_ADDRESS
|
||||
MIDGARD_ACTIVE_VAULT_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_FEE_EVENTS,ASSET_E8
|
||||
MIDGARD_TRANSFER_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,CACAO_E8
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,CACAO_E8
|
||||
MIDGARD_INACTIVE_VAULT_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_GAS_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_OUTBOUND_EVENTS,ASSET_E8
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,POOL
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,VALIDATOR_CONSENSUS
|
||||
MIDGARD_SWAP_EVENTS,FROM_ASSET
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,NODE_ADDR
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,SYNTH_E8
|
||||
MIDGARD_WITHDRAW_EVENTS,TO_ADDR
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,DEPOSIT_E8
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,FAILED_SWAPS
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,ADDRESS
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,REASON
|
||||
MIDGARD_BOND_EVENTS,BOND_TYPE
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,INTERVAL
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_GAS_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_SLASH_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SWAP_EVENTS,TO_ADDR
|
||||
MIDGARD_BOND_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,EVENT_ID
|
||||
MIDGARD_ADD_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,HEIGHT
|
||||
MIDGARD_SWAP_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_ACTIVE_VAULT_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_STAKE_EVENTS,EVENT_ID
|
||||
MIDGARD_RESERVE_EVENTS,FROM_ADDR
|
||||
MIDGARD_TRANSFER_EVENTS,EVENT_ID
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,EVENT_ID
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,SUB_AFFILIATES
|
||||
MIDGARD_ADD_EVENTS,POOL
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,IP_ADDR
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,AMOUNT_E8
|
||||
MIDGARD_ADD_EVENTS,ASSET
|
||||
MIDGARD_SWAP_EVENTS,_DIRECTION
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,IN_E8
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,ASSET
|
||||
MIDGARD_WITHDRAW_EVENTS,EVENT_ID
|
||||
MIDGARD_SWAP_EVENTS,TX
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_STAKE_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_FEE_EVENTS,POOL_DEDUCT
|
||||
MIDGARD_GAS_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_GAS_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,EVENT_ID
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,CURRENT
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,ADDRESS
|
||||
MIDGARD_SET_VERSION_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,ASSET_E8_LOSS
|
||||
MIDGARD_OUTBOUND_EVENTS,ASSET
|
||||
MIDGARD_SLASH_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_ADD_EVENTS,TX
|
||||
MIDGARD_REWARDS_EVENT_ENTRIES,BLOCK_TIMESTAMP
|
||||
MIDGARD_SET_VERSION_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_RESERVE_EVENTS,ASSET_E8
|
||||
MIDGARD_NEW_NODE_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_GAS_EVENTS,CACAO_E8
|
||||
MIDGARD_SET_IP_ADDRESS_EVENTS,EVENT_ID
|
||||
MIDGARD_SLASH_POINTS_EVENTS,REASON
|
||||
MIDGARD_SWAP_EVENTS,STREAMING_QUANTITY
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,ASSET_TX
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,__HEVO__LOADED_AT
|
||||
MIDGARD_BLOCK_LOG,HASH
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,OUT_E8
|
||||
MIDGARD_SLASH_POINTS_EVENTS,NODE_ADDRESS
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_NEW_NODE_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_BLOCK_LOG,AGG_STATE
|
||||
MIDGARD_BOND_EVENTS,FROM_ADDR
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_STAKE_EVENTS,ASSET_CHAIN
|
||||
MIDGARD_FEE_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,__HEVO__INGESTED_AT
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,EVENT_ID
|
||||
MIDGARD_SET_MIMIR_EVENTS,KEY
|
||||
MIDGARD_POOL_EVENTS,STATUS
|
||||
MIDGARD_SET_MIMIR_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_RESERVE_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_TRANSFER_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_FEE_EVENTS,ASSET
|
||||
MIDGARD_NEW_NODE_EVENTS,NODE_ADDR
|
||||
MIDGARD_POOL_EVENTS,EVENT_ID
|
||||
MIDGARD_SLASH_POINTS_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_SET_MIMIR_EVENTS,EVENT_ID
|
||||
MIDGARD_CONSTANTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,PENDING_TYPE
|
||||
MIDGARD_STAKE_EVENTS,MEMO
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,SECP256K1
|
||||
MIDGARD_SLASH_EVENTS,POOL
|
||||
MIDGARD_ADD_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_ADD_EVENTS,MEMO
|
||||
MIDGARD_SEND_MESSAGES,__HEVO__DATABASE_NAME
|
||||
MIDGARD_ACTIVE_VAULT_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SLASH_EVENTS,EVENT_ID
|
||||
MIDGARD_ACTIVE_VAULT_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,EVENT_ID
|
||||
MIDGARD_SWAP_EVENTS,SWAP_SLIP_BP
|
||||
MIDGARD_SWAP_EVENTS,FROM_E8
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,ASSET_ADD
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,ASSET_CHAIN
|
||||
MIDGARD_WITHDRAW_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_SLASH_POINTS_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_WITHDRAW_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,CACAO_E10_LOSS
|
||||
MIDGARD_REWARDS_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,FORMER
|
||||
MIDGARD_FEE_EVENTS,TX
|
||||
MIDGARD_WITHDRAW_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_WITHDRAW_EVENTS,STAKE_UNITS
|
||||
MIDGARD_BLOCK_LOG,TIMESTAMP
|
||||
MIDGARD_OUTBOUND_EVENTS,FROM_ADDR
|
||||
MIDGARD_STAKE_EVENTS,_ASSET_IN_CACAO_E8
|
||||
MIDGARD_WITHDRAW_EVENTS,TX
|
||||
MIDGARD_STAKE_EVENTS,CACAO_TX
|
||||
MIDGARD_WITHDRAW_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_TRANSFER_EVENTS,FROM_ADDR
|
||||
MIDGARD_SEND_MESSAGES,__HEVO__LOADED_AT
|
||||
MIDGARD_SLASH_POINTS_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_WITHDRAW_EVENTS,ASSET
|
||||
MIDGARD_SET_MIMIR_EVENTS,VALUE
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_REWARDS_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_FEE_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,CACAO_E8
|
||||
MIDGARD_SET_NODE_KEYS_EVENTS,ED25519
|
||||
MIDGARD_BOND_EVENTS,ASSET_E8
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_SWAP_EVENTS,CHAIN
|
||||
MIDGARD_TRANSFER_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_GAS_EVENTS,ASSET
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_REWARDS_EVENTS,BOND_E8
|
||||
MIDGARD_SEND_MESSAGES,AMOUNT_E8
|
||||
MIDGARD_REFUND_EVENTS,FROM_ADDR
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,DEPOSIT_ASSET
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,MEMO
|
||||
MIDGARD_SEND_MESSAGES,BLOCK_TIMESTAMP
|
||||
MIDGARD_RESERVE_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_OUTBOUND_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_RESERVE_EVENTS,TO_ADDR
|
||||
MIDGARD_BOND_EVENTS,TO_ADDR
|
||||
MIDGARD_REFUND_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_RESERVE_EVENTS,ADDR
|
||||
MIDGARD_SET_VERSION_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_UPDATE_NODE_ACCOUNT_STATUS_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_WITHDRAW_EVENTS,ASSET_E8
|
||||
MIDGARD_SEND_MESSAGES,ASSET
|
||||
MIDGARD_SET_NODE_MIMIR_EVENTS,VALUE
|
||||
MIDGARD_REFUND_EVENTS,REASON
|
||||
MIDGARD_BOND_EVENTS,EVENT_ID
|
||||
MIDGARD_SLASH_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_STAKE_EVENTS,ASSET_ADDR
|
||||
MIDGARD_POOL_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,FROM_ADDR
|
||||
MIDGARD_BOND_EVENTS,ASSET
|
||||
MIDGARD_WITHDRAW_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_CONSTANTS,__HEVO__LOADED_AT
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SWAP_EVENTS,MEMO
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,CACAO_ADDR
|
||||
MIDGARD_SEND_MESSAGES,TO_ADDR
|
||||
MIDGARD_SET_VERSION_EVENTS,EVENT_ID
|
||||
MIDGARD_REFUND_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_FAILED_DEPOSIT_MESSAGES,BLOCK_TIMESTAMP
|
||||
MIDGARD_OUTBOUND_EVENTS,CHAIN
|
||||
MIDGARD_INACTIVE_VAULT_EVENTS,EVENT_ID
|
||||
MIDGARD_OUTBOUND_EVENTS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_POOL_BALANCE_CHANGE_EVENTS,CACAO_AMT
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_SWAP_EVENTS,__HEVO__LOADED_AT
|
||||
MIDGARD_RESERVE_EVENTS,MEMO
|
||||
MIDGARD_STAKE_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_STAKE_EVENTS,__HEVO__INGESTED_AT
|
||||
MIDGARD_WITHDRAW_EVENTS,CHAIN
|
||||
MIDGARD_RESERVE_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,__HEVO__SCHEMA_NAME
|
||||
MIDGARD_TRANSFER_EVENTS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_MAYANAME_CHANGE_EVENTS,TX_ID
|
||||
MIDGARD_PENDING_LIQUIDITY_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_SEND_MESSAGES,CODE
|
||||
MIDGARD_SET_VERSION_EVENTS,NODE_ADDR
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,ASSET
|
||||
MIDGARD_BLOCK_POOL_DEPTHS,__HEVO__DATABASE_NAME
|
||||
MIDGARD_SEND_MESSAGES,EVENT_ID
|
||||
MIDGARD_FEE_EVENTS,EVENT_ID
|
||||
MIDGARD_TRANSFER_EVENTS,TO_ADDR
|
||||
MIDGARD_REFUND_EVENTS,MEMO
|
||||
MIDGARD_VALIDATOR_REQUEST_LEAVE_EVENTS,TX
|
||||
MIDGARD_REFUND_EVENTS,EVENT_ID
|
||||
MIDGARD_TRANSFER_EVENTS,ASSET
|
||||
MIDGARD_RESERVE_EVENTS,TX
|
||||
MIDGARD_WITHDRAW_EVENTS,EMIT_ASSET_E8
|
||||
MIDGARD_BOND_EVENTS,BLOCK_TIMESTAMP
|
||||
MIDGARD_SLASH_LIQUIDITY_EVENTS,LP_UNITS
|
||||
MIDGARD_SLASH_POINTS_EVENTS,EVENT_ID
|
||||
MIDGARD_REFUND_EVENTS,CODE
|
||||
MIDGARD_STREAMING_SWAP_DETAILS_EVENTS,EVENT_ID
|
||||
|
17
models/bronze/bronze__active_vault_events.sql
Normal file
17
models/bronze/bronze__active_vault_events.sql
Normal file
@ -0,0 +1,17 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
add_asgard_addr,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_active_vault_events'
|
||||
) }}
|
||||
25
models/bronze/bronze__add_events.sql
Normal file
25
models/bronze/bronze__add_events.sql
Normal file
@ -0,0 +1,25 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
chain,
|
||||
from_addr,
|
||||
to_addr,
|
||||
asset,
|
||||
asset_e8,
|
||||
memo,
|
||||
cacao_e8,
|
||||
pool,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_add_events'
|
||||
) }}
|
||||
18
models/bronze/bronze__block_log.sql
Normal file
18
models/bronze/bronze__block_log.sql
Normal file
@ -0,0 +1,18 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
HASH,
|
||||
height,
|
||||
TIMESTAMP,
|
||||
agg_state,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_block_log'
|
||||
) }}
|
||||
19
models/bronze/bronze__block_pool_depths.sql
Normal file
19
models/bronze/bronze__block_pool_depths.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
pool,
|
||||
asset_e8,
|
||||
cacao_e8,
|
||||
synth_e8,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_block_pool_depths'
|
||||
) }}
|
||||
25
models/bronze/bronze__bond_events.sql
Normal file
25
models/bronze/bronze__bond_events.sql
Normal file
@ -0,0 +1,25 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
chain,
|
||||
from_addr,
|
||||
to_addr,
|
||||
asset,
|
||||
asset_e8,
|
||||
memo,
|
||||
bond_type,
|
||||
e8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_bond_events'
|
||||
) }}
|
||||
16
models/bronze/bronze__cacao_price.sql
Normal file
16
models/bronze/bronze__cacao_price.sql
Normal file
@ -0,0 +1,16 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
cacao_price_e8,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_cacao_price'
|
||||
) }}
|
||||
16
models/bronze/bronze__constants.sql
Normal file
16
models/bronze/bronze__constants.sql
Normal file
@ -0,0 +1,16 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
key,
|
||||
VALUE,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_constants'
|
||||
) }}
|
||||
23
models/bronze/bronze__failed_deposit_messages.sql
Normal file
23
models/bronze/bronze__failed_deposit_messages.sql
Normal file
@ -0,0 +1,23 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx_id,
|
||||
code,
|
||||
memo,
|
||||
asset,
|
||||
amount_e8,
|
||||
from_addr,
|
||||
reason,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_failed_deposit_messages'
|
||||
) }}
|
||||
20
models/bronze/bronze__fee_events.sql
Normal file
20
models/bronze/bronze__fee_events.sql
Normal file
@ -0,0 +1,20 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
asset,
|
||||
asset_e8,
|
||||
pool_deduct,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_fee_events'
|
||||
) }}
|
||||
20
models/bronze/bronze__gas_events.sql
Normal file
20
models/bronze/bronze__gas_events.sql
Normal file
@ -0,0 +1,20 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
asset,
|
||||
asset_e8,
|
||||
cacao_e8,
|
||||
tx_count,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_gas_events'
|
||||
) }}
|
||||
17
models/bronze/bronze__inactive_vault_events.sql
Normal file
17
models/bronze/bronze__inactive_vault_events.sql
Normal file
@ -0,0 +1,17 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
add_asgard_addr,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_inactive_vault_events'
|
||||
) }}
|
||||
30
models/bronze/bronze__mayaname_change_events.sql
Normal file
30
models/bronze/bronze__mayaname_change_events.sql
Normal file
@ -0,0 +1,30 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
NAME,
|
||||
chain,
|
||||
address,
|
||||
registration_fee_e8,
|
||||
fund_amount_e8,
|
||||
height,
|
||||
expire,
|
||||
owner,
|
||||
tx_id,
|
||||
memo,
|
||||
sender,
|
||||
preferred_asset,
|
||||
affiliate_bps,
|
||||
sub_affiliates,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_mayaname_change_events'
|
||||
) }}
|
||||
17
models/bronze/bronze__new_node_events.sql
Normal file
17
models/bronze/bronze__new_node_events.sql
Normal file
@ -0,0 +1,17 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
node_addr,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_new_node_events'
|
||||
) }}
|
||||
25
models/bronze/bronze__outbound_events.sql
Normal file
25
models/bronze/bronze__outbound_events.sql
Normal file
@ -0,0 +1,25 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
chain,
|
||||
from_addr,
|
||||
to_addr,
|
||||
asset,
|
||||
asset_e8,
|
||||
memo,
|
||||
in_tx,
|
||||
internal,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_outbound_events'
|
||||
) }}
|
||||
25
models/bronze/bronze__pending_liquidity_events.sql
Normal file
25
models/bronze/bronze__pending_liquidity_events.sql
Normal file
@ -0,0 +1,25 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
pool,
|
||||
asset_tx,
|
||||
asset_chain,
|
||||
asset_addr,
|
||||
asset_e8,
|
||||
cacao_tx,
|
||||
cacao_addr,
|
||||
cacao_e8,
|
||||
pending_type,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_pending_liquidity_events'
|
||||
) }}
|
||||
22
models/bronze/bronze__pool_balance_change_events.sql
Normal file
22
models/bronze/bronze__pool_balance_change_events.sql
Normal file
@ -0,0 +1,22 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
asset,
|
||||
cacao_amt,
|
||||
cacao_add,
|
||||
asset_amt,
|
||||
asset_add,
|
||||
reason,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_pool_balance_change_events'
|
||||
) }}
|
||||
18
models/bronze/bronze__pool_events.sql
Normal file
18
models/bronze/bronze__pool_events.sql
Normal file
@ -0,0 +1,18 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
asset,
|
||||
status,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_pool_events'
|
||||
) }}
|
||||
27
models/bronze/bronze__refund_events.sql
Normal file
27
models/bronze/bronze__refund_events.sql
Normal file
@ -0,0 +1,27 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
chain,
|
||||
from_addr,
|
||||
to_addr,
|
||||
asset,
|
||||
asset_e8,
|
||||
asset_2nd,
|
||||
asset_2nd_e8,
|
||||
memo,
|
||||
code,
|
||||
reason,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_refund_events'
|
||||
) }}
|
||||
25
models/bronze/bronze__reserve_events.sql
Normal file
25
models/bronze/bronze__reserve_events.sql
Normal file
@ -0,0 +1,25 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
chain,
|
||||
from_addr,
|
||||
to_addr,
|
||||
asset,
|
||||
asset_e8,
|
||||
memo,
|
||||
addr,
|
||||
e8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_reserve_events'
|
||||
) }}
|
||||
19
models/bronze/bronze__rewards_event_entries.sql
Normal file
19
models/bronze/bronze__rewards_event_entries.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
pool,
|
||||
cacao_e8,
|
||||
saver_e8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_rewards_event_entries'
|
||||
) }}
|
||||
17
models/bronze/bronze__rewards_events.sql
Normal file
17
models/bronze/bronze__rewards_events.sql
Normal file
@ -0,0 +1,17 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
bond_e8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_rewards_events'
|
||||
) }}
|
||||
24
models/bronze/bronze__send_messages.sql
Normal file
24
models/bronze/bronze__send_messages.sql
Normal file
@ -0,0 +1,24 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
amount_e8,
|
||||
asset,
|
||||
from_addr,
|
||||
to_addr,
|
||||
memo,
|
||||
tx_id,
|
||||
raw_log,
|
||||
code,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_send_messages'
|
||||
) }}
|
||||
18
models/bronze/bronze__set_ip_address_events.sql
Normal file
18
models/bronze/bronze__set_ip_address_events.sql
Normal file
@ -0,0 +1,18 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
node_addr,
|
||||
ip_addr,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_set_ip_address_events'
|
||||
) }}
|
||||
18
models/bronze/bronze__set_mimir_events.sql
Normal file
18
models/bronze/bronze__set_mimir_events.sql
Normal file
@ -0,0 +1,18 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
key,
|
||||
VALUE,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_set_mimir_events'
|
||||
) }}
|
||||
20
models/bronze/bronze__set_node_keys_events.sql
Normal file
20
models/bronze/bronze__set_node_keys_events.sql
Normal file
@ -0,0 +1,20 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
node_addr,
|
||||
secp256k1,
|
||||
ed25519,
|
||||
validator_consensus,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_set_node_keys_events'
|
||||
) }}
|
||||
19
models/bronze/bronze__set_node_mimir_events.sql
Normal file
19
models/bronze/bronze__set_node_mimir_events.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
address,
|
||||
key,
|
||||
VALUE,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_set_node_mimir_events'
|
||||
) }}
|
||||
18
models/bronze/bronze__set_version_events.sql
Normal file
18
models/bronze/bronze__set_version_events.sql
Normal file
@ -0,0 +1,18 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
node_addr,
|
||||
version,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_set_version_events'
|
||||
) }}
|
||||
19
models/bronze/bronze__slash_events.sql
Normal file
19
models/bronze/bronze__slash_events.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
pool,
|
||||
asset,
|
||||
asset_e8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_slash_events'
|
||||
) }}
|
||||
22
models/bronze/bronze__slash_liquidity_events.sql
Normal file
22
models/bronze/bronze__slash_liquidity_events.sql
Normal file
@ -0,0 +1,22 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
bond_address,
|
||||
lp_address,
|
||||
asset,
|
||||
lp_units,
|
||||
asset_e8_loss,
|
||||
cacao_e10_loss,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_slash_liquidity_events'
|
||||
) }}
|
||||
19
models/bronze/bronze__slash_points_events.sql
Normal file
19
models/bronze/bronze__slash_points_events.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
node_address,
|
||||
slash_points,
|
||||
reason,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_slash_points_events'
|
||||
) }}
|
||||
27
models/bronze/bronze__stake_events.sql
Normal file
27
models/bronze/bronze__stake_events.sql
Normal file
@ -0,0 +1,27 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
pool,
|
||||
asset_tx,
|
||||
asset_chain,
|
||||
asset_addr,
|
||||
asset_e8,
|
||||
stake_units,
|
||||
cacao_tx,
|
||||
cacao_addr,
|
||||
cacao_e8,
|
||||
_ASSET_IN_CACAO_E8,
|
||||
memo,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_stake_events'
|
||||
) }}
|
||||
29
models/bronze/bronze__streamling_swap_details_events.sql
Normal file
29
models/bronze/bronze__streamling_swap_details_events.sql
Normal file
@ -0,0 +1,29 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx_id,
|
||||
INTERVAL,
|
||||
quantity,
|
||||
COUNT,
|
||||
last_height,
|
||||
deposit_asset,
|
||||
deposit_e8,
|
||||
in_asset,
|
||||
in_e8,
|
||||
out_asset,
|
||||
out_e8,
|
||||
failed_swaps,
|
||||
failed_swap_reasons,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_streaming_swap_details_events'
|
||||
) }}
|
||||
34
models/bronze/bronze__swap_events.sql
Normal file
34
models/bronze/bronze__swap_events.sql
Normal file
@ -0,0 +1,34 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
chain,
|
||||
from_addr,
|
||||
to_addr,
|
||||
from_asset,
|
||||
from_e8,
|
||||
to_asset,
|
||||
to_e8,
|
||||
memo,
|
||||
pool,
|
||||
to_e8_min,
|
||||
swap_slip_bp,
|
||||
liq_fee_e8,
|
||||
liq_fee_in_cacao_e8,
|
||||
_DIRECTION,
|
||||
_STREAMING,
|
||||
streaming_count,
|
||||
streaming_quantity,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_swap_events'
|
||||
) }}
|
||||
20
models/bronze/bronze__transfer_events.sql
Normal file
20
models/bronze/bronze__transfer_events.sql
Normal file
@ -0,0 +1,20 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
from_addr,
|
||||
to_addr,
|
||||
asset,
|
||||
amount_e8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_transfer_events'
|
||||
) }}
|
||||
19
models/bronze/bronze__update_node_account_status_events.sql
Normal file
19
models/bronze/bronze__update_node_account_status_events.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
node_addr,
|
||||
former,
|
||||
"CURRENT",
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_update_node_account_status_events'
|
||||
) }}
|
||||
19
models/bronze/bronze__validator_request_leave_events.sql
Normal file
19
models/bronze/bronze__validator_request_leave_events.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
from_addr,
|
||||
node_addr,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_validator_request_leave_events'
|
||||
) }}
|
||||
31
models/bronze/bronze__withdraw_events.sql
Normal file
31
models/bronze/bronze__withdraw_events.sql
Normal file
@ -0,0 +1,31 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx,
|
||||
chain,
|
||||
from_addr,
|
||||
to_addr,
|
||||
asset,
|
||||
asset_e8,
|
||||
emit_asset_e8,
|
||||
emit_cacao_e8,
|
||||
memo,
|
||||
pool,
|
||||
stake_units,
|
||||
basis_points,
|
||||
asymmetry,
|
||||
imp_loss_protection_e8,
|
||||
_EMIT_ASSET_IN_CACAO_E8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
FROM
|
||||
{{ source(
|
||||
'maya_midgard',
|
||||
'midgard_withdraw_events'
|
||||
) }}
|
||||
22
models/silver/silver__active_vault_events.sql
Normal file
22
models/silver/silver__active_vault_events.sql
Normal file
@ -0,0 +1,22 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
add_asgard_addr,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
__HEVO__DATABASE_NAME,
|
||||
__HEVO__SCHEMA_NAME,
|
||||
__HEVO__INGESTED_AT,
|
||||
__HEVO__LOADED_AT,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__active_vault_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
16
models/silver/silver__active_vault_events.yml
Normal file
16
models/silver/silver__active_vault_events.yml
Normal file
@ -0,0 +1,16 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__active_vault_events
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- EVENT_ID
|
||||
- BLOCK_TIMESTAMP
|
||||
- ADD_ASGARD_ADDR
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ADD_ASGARD_ADDR
|
||||
data_tests:
|
||||
- not_null
|
||||
26
models/silver/silver__add_events.sql
Normal file
26
models/silver/silver__add_events.sql
Normal file
@ -0,0 +1,26 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx AS tx_id,
|
||||
chain AS blockchain,
|
||||
from_addr AS from_address,
|
||||
to_addr AS to_address,
|
||||
asset,
|
||||
asset_e8,
|
||||
memo,
|
||||
cacao_e8,
|
||||
pool AS pool_name,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__add_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
38
models/silver/silver__add_events.yml
Normal file
38
models/silver/silver__add_events.yml
Normal file
@ -0,0 +1,38 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__add_events
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- EVENT_ID
|
||||
- TX_ID
|
||||
- BLOCKCHAIN
|
||||
- POOL_NAME
|
||||
- FROM_ADDRESS
|
||||
- TO_ADDRESS
|
||||
- MEMO
|
||||
columns:
|
||||
- name: TX_ID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: FROM_ADDRESS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_ADDRESS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: MEMO
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: POOL_NAME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
43
models/silver/silver__block_log.sql
Normal file
43
models/silver/silver__block_log.sql
Normal file
@ -0,0 +1,43 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
WITH base AS (
|
||||
|
||||
SELECT
|
||||
height,
|
||||
TO_TIMESTAMP(
|
||||
TIMESTAMP / 1000000000
|
||||
) AS block_timestamp,
|
||||
TIMESTAMP,
|
||||
HASH,
|
||||
agg_state,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__block_log') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY height
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
)
|
||||
SELECT
|
||||
height,
|
||||
block_timestamp,
|
||||
block_timestamp :: DATE AS block_date,
|
||||
HOUR(block_timestamp) AS block_hour,
|
||||
week(block_timestamp) AS block_week,
|
||||
MONTH(block_timestamp) AS block_month,
|
||||
quarter(block_timestamp) AS block_quarter,
|
||||
YEAR(block_timestamp) AS block_year,
|
||||
dayofmonth(block_timestamp) AS block_DAYOFMONTH,
|
||||
dayofweek(block_timestamp) AS block_DAYOFWEEK,
|
||||
dayofyear(block_timestamp) AS block_DAYOFYEAR,
|
||||
TIMESTAMP,
|
||||
HASH,
|
||||
agg_state,
|
||||
_INSERTED_TIMESTAMP
|
||||
FROM
|
||||
base
|
||||
20
models/silver/silver__block_log.yml
Normal file
20
models/silver/silver__block_log.yml
Normal file
@ -0,0 +1,20 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__block_log
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- HEIGHT
|
||||
- TIMESTAMP
|
||||
- HASH
|
||||
- AGG_STATE
|
||||
columns:
|
||||
- name: TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: HEIGHT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: HASH
|
||||
data_tests:
|
||||
- not_null
|
||||
20
models/silver/silver__block_pool_depths.sql
Normal file
20
models/silver/silver__block_pool_depths.sql
Normal file
@ -0,0 +1,20 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
pool AS pool_name,
|
||||
asset_e8,
|
||||
cacao_e8,
|
||||
synth_e8,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__block_pool_depths') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY pool, block_timestamp
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
24
models/silver/silver__block_pool_depths.yml
Normal file
24
models/silver/silver__block_pool_depths.yml
Normal file
@ -0,0 +1,24 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__block_pool_depths
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- BLOCK_TIMESTAMP
|
||||
- POOL_NAME
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: POOL_NAME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: CACAO_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SYNTH_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
160
models/silver/silver__block_rewards.sql
Normal file
160
models/silver/silver__block_rewards.sql
Normal file
@ -0,0 +1,160 @@
|
||||
{{ config(
|
||||
materialized = 'table',
|
||||
cluster_by = ['day']
|
||||
) }}
|
||||
|
||||
WITH all_block_id AS (
|
||||
|
||||
SELECT
|
||||
block_timestamp,
|
||||
MAX(_inserted_timestamp) AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__block_pool_depths') }}
|
||||
GROUP BY
|
||||
block_timestamp
|
||||
),
|
||||
avg_nodes_tbl AS (
|
||||
SELECT
|
||||
block_timestamp,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN current_status = 'Active' THEN 1
|
||||
WHEN former_status = 'Active' THEN -1
|
||||
ELSE 0
|
||||
END
|
||||
) AS delta
|
||||
FROM
|
||||
{{ ref('silver__update_node_account_status_events') }}
|
||||
GROUP BY
|
||||
block_timestamp
|
||||
),
|
||||
all_block_with_nodes AS (
|
||||
SELECT
|
||||
all_block_id.block_timestamp,
|
||||
delta,
|
||||
SUM(delta) over (
|
||||
ORDER BY
|
||||
all_block_id.block_timestamp ASC
|
||||
) AS avg_nodes,
|
||||
_inserted_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
all_block_id
|
||||
LEFT JOIN avg_nodes_tbl
|
||||
ON all_block_id.block_timestamp = avg_nodes_tbl.block_timestamp
|
||||
),
|
||||
all_block_with_nodes_date AS (
|
||||
SELECT
|
||||
b.block_timestamp :: DATE AS DAY,
|
||||
AVG(avg_nodes) AS avg_nodes,
|
||||
MAX(
|
||||
A._inserted_timestamp
|
||||
) AS _inserted_timestamp
|
||||
FROM
|
||||
all_block_with_nodes A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
GROUP BY
|
||||
DAY
|
||||
),
|
||||
liquidity_fee_tbl AS (
|
||||
SELECT
|
||||
DATE(
|
||||
b.block_timestamp
|
||||
) AS DAY,
|
||||
COALESCE(SUM(liq_fee_in_cacao_e8), 0) AS liquidity_fee
|
||||
FROM
|
||||
{{ ref('silver__swap_events') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
GROUP BY
|
||||
1
|
||||
),
|
||||
bond_earnings_tbl AS (
|
||||
SELECT
|
||||
DATE(
|
||||
b.block_timestamp
|
||||
) AS DAY,
|
||||
SUM(bond_e8) AS bond_earnings
|
||||
FROM
|
||||
{{ ref('silver__rewards_events') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
GROUP BY
|
||||
DAY
|
||||
),
|
||||
total_pool_rewards_tbl AS (
|
||||
SELECT
|
||||
DATE(
|
||||
b.block_timestamp
|
||||
) AS DAY,
|
||||
SUM(cacao_e8) AS total_pool_rewards
|
||||
FROM
|
||||
{{ ref('silver__rewards_event_entries') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
GROUP BY
|
||||
DAY
|
||||
)
|
||||
SELECT
|
||||
all_block_with_nodes_date.day,
|
||||
COALESCE((liquidity_fee_tbl.liquidity_fee / power(10, 8)), 0) AS liquidity_fee,
|
||||
(
|
||||
(
|
||||
COALESCE(
|
||||
total_pool_rewards_tbl.total_pool_rewards,
|
||||
0
|
||||
) + COALESCE(
|
||||
bond_earnings_tbl.bond_earnings,
|
||||
0
|
||||
)
|
||||
)
|
||||
) / power(
|
||||
10,
|
||||
8
|
||||
) AS block_rewards,
|
||||
(
|
||||
(
|
||||
COALESCE(
|
||||
total_pool_rewards_tbl.total_pool_rewards,
|
||||
0
|
||||
) + COALESCE(
|
||||
liquidity_fee_tbl.liquidity_fee,
|
||||
0
|
||||
) + COALESCE(
|
||||
bond_earnings_tbl.bond_earnings,
|
||||
0
|
||||
)
|
||||
)
|
||||
) / power(
|
||||
10,
|
||||
8
|
||||
) AS earnings,
|
||||
COALESCE((bond_earnings_tbl.bond_earnings / power(10, 8)), 0) AS bonding_earnings,
|
||||
(
|
||||
(
|
||||
COALESCE(
|
||||
total_pool_rewards_tbl.total_pool_rewards,
|
||||
0
|
||||
) + COALESCE(
|
||||
liquidity_fee_tbl.liquidity_fee,
|
||||
0
|
||||
)
|
||||
)
|
||||
) / power(
|
||||
10,
|
||||
8
|
||||
) AS liquidity_earnings,
|
||||
all_block_with_nodes_date.avg_nodes + 2 AS avg_node_count,
|
||||
all_block_with_nodes_date._inserted_timestamp
|
||||
FROM
|
||||
all_block_with_nodes_date
|
||||
LEFT JOIN liquidity_fee_tbl
|
||||
ON all_block_with_nodes_date.day = liquidity_fee_tbl.day
|
||||
LEFT JOIN total_pool_rewards_tbl
|
||||
ON all_block_with_nodes_date.day = total_pool_rewards_tbl.day
|
||||
LEFT JOIN bond_earnings_tbl
|
||||
ON all_block_with_nodes_date.day = bond_earnings_tbl.day
|
||||
30
models/silver/silver__block_rewards.yml
Normal file
30
models/silver/silver__block_rewards.yml
Normal file
@ -0,0 +1,30 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__block_rewards
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- DAY
|
||||
columns:
|
||||
- name: DAY
|
||||
data_tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 2
|
||||
- name: LIQUIDITY_FEE
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_REWARDS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: EARNINGS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BONDING_EARNINGS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: LIQUIDITY_EARNINGS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: AVG_NODE_COUNT
|
||||
26
models/silver/silver__bond_events.sql
Normal file
26
models/silver/silver__bond_events.sql
Normal file
@ -0,0 +1,26 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx AS tx_id,
|
||||
chain AS blockchain,
|
||||
from_addr AS from_address,
|
||||
to_addr AS to_address,
|
||||
asset,
|
||||
asset_e8,
|
||||
memo,
|
||||
bond_type,
|
||||
e8,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__bond_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
19
models/silver/silver__bond_events.yml
Normal file
19
models/silver/silver__bond_events.yml
Normal file
@ -0,0 +1,19 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__bond_events
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TX_ID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BOND_TYPE
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: E8
|
||||
data_tests:
|
||||
- not_null
|
||||
19
models/silver/silver__cacao_price.sql
Normal file
19
models/silver/silver__cacao_price.sql
Normal file
@ -0,0 +1,19 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
cacao_price_e8,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref(
|
||||
'bronze__cacao_price'
|
||||
) }}
|
||||
qualify(ROW_NUMBER() over (PARTITION BY block_timestamp
|
||||
ORDER BY
|
||||
cacao_price_e8 DESC) = 1)
|
||||
10
models/silver/silver__cacao_price.yml
Normal file
10
models/silver/silver__cacao_price.yml
Normal file
@ -0,0 +1,10 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__cacao_price
|
||||
columns:
|
||||
- name: CACAO_PRICE_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
9
models/silver/silver__constants.sql
Normal file
9
models/silver/silver__constants.sql
Normal file
@ -0,0 +1,9 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
C.key,
|
||||
C.value
|
||||
FROM
|
||||
{{ ref('bronze__constants') }} C
|
||||
109
models/silver/silver__daily_earnings.sql
Normal file
109
models/silver/silver__daily_earnings.sql
Normal file
@ -0,0 +1,109 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = 'day',
|
||||
incremental_strategy = 'merge',
|
||||
cluster_by = ['day']
|
||||
) }}
|
||||
|
||||
WITH max_daily_block AS (
|
||||
|
||||
SELECT
|
||||
MAX(
|
||||
block_id
|
||||
) AS block_id,
|
||||
DATE_TRUNC(
|
||||
'day',
|
||||
block_timestamp
|
||||
) AS DAY
|
||||
FROM
|
||||
{{ ref('silver__prices') }} A
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
DAY
|
||||
),
|
||||
daily_cacao_price AS (
|
||||
SELECT
|
||||
p.block_id,
|
||||
DAY,
|
||||
AVG(cacao_usd) AS cacao_usd
|
||||
FROM
|
||||
{{ ref('silver__prices') }}
|
||||
p
|
||||
JOIN max_daily_block mdb
|
||||
ON p.block_id = mdb.block_id
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
DAY,
|
||||
p.block_id
|
||||
)
|
||||
SELECT
|
||||
br.day,
|
||||
COALESCE(
|
||||
liquidity_fee,
|
||||
0
|
||||
) AS liquidity_fees,
|
||||
COALESCE(
|
||||
liquidity_fee * cacao_usd,
|
||||
0
|
||||
) AS liquidity_fees_usd,
|
||||
block_rewards AS block_rewards,
|
||||
block_rewards * cacao_usd AS block_rewards_usd,
|
||||
COALESCE(
|
||||
earnings,
|
||||
0
|
||||
) AS total_earnings,
|
||||
COALESCE(
|
||||
earnings * cacao_usd,
|
||||
0
|
||||
) AS total_earnings_usd,
|
||||
bonding_earnings AS earnings_to_nodes,
|
||||
bonding_earnings * cacao_usd AS earnings_to_nodes_usd,
|
||||
COALESCE(
|
||||
liquidity_earnings,
|
||||
0
|
||||
) AS earnings_to_pools,
|
||||
COALESCE(
|
||||
liquidity_earnings * cacao_usd,
|
||||
0
|
||||
) AS earnings_to_pools_usd,
|
||||
avg_node_count,
|
||||
br._inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__block_rewards') }}
|
||||
br
|
||||
JOIN daily_cacao_price drp
|
||||
ON br.day = drp.day
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
br.day >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
45
models/silver/silver__daily_earnings.yml
Normal file
45
models/silver/silver__daily_earnings.yml
Normal file
@ -0,0 +1,45 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__daily_earnings
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- DAY
|
||||
columns:
|
||||
- name: DAY
|
||||
data_tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 2
|
||||
- name: LIQUIDITY_FEES
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: LIQUIDITY_FEES_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_REWARDS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_REWARDS_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_EARNINGS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_EARNINGS_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: EARNINGS_TO_NODES
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: EARNINGS_TO_NODES_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: EARNINGS_TO_POOLS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: EARNINGS_TO_POOLS_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: AVG_NODE_COUNT
|
||||
177
models/silver/silver__daily_pool_stats.sql
Normal file
177
models/silver/silver__daily_pool_stats.sql
Normal file
@ -0,0 +1,177 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "_unique_key",
|
||||
incremental_strategy = 'merge',
|
||||
cluster_by = ['day'],
|
||||
incremental_predicates = ['DBT_INTERNAL_DEST.day >= (select min(day) from ' ~ generate_tmp_view_name(this) ~ ')']
|
||||
) }}
|
||||
|
||||
WITH daily_cacao_price AS (
|
||||
|
||||
SELECT
|
||||
pool_name,
|
||||
block_timestamp :: DATE AS DAY,
|
||||
AVG(cacao_usd) AS cacao_usd,
|
||||
AVG(asset_usd) AS asset_usd
|
||||
FROM
|
||||
{{ ref('silver__prices') }}
|
||||
p
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
pool_name,
|
||||
DAY
|
||||
),
|
||||
pool_fees AS (
|
||||
SELECT
|
||||
pbf.day,
|
||||
pbf.pool_name,
|
||||
rewards AS system_rewards,
|
||||
rewards * cacao_usd AS system_rewards_usd,
|
||||
asset_liquidity_fees,
|
||||
asset_liquidity_fees * asset_usd AS asset_liquidity_fees_usd,
|
||||
cacao_liquidity_fees,
|
||||
cacao_liquidity_fees * cacao_usd AS cacao_liquidity_fees_usd
|
||||
FROM
|
||||
{{ ref('silver__pool_block_fees') }}
|
||||
pbf
|
||||
JOIN daily_cacao_price drp
|
||||
ON pbf.day = drp.day
|
||||
AND pbf.pool_name = drp.pool_name
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
pbf.day >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
pbs.day,
|
||||
pbs.asset AS pool_name,
|
||||
COALESCE(
|
||||
system_rewards,
|
||||
0
|
||||
) AS system_rewards,
|
||||
COALESCE(
|
||||
system_rewards_usd,
|
||||
0
|
||||
) AS system_rewards_usd,
|
||||
COALESCE(asset_depth / pow(10, 8), 0) AS asset_liquidity,
|
||||
COALESCE(
|
||||
asset_price,
|
||||
0
|
||||
) AS asset_price,
|
||||
COALESCE(
|
||||
asset_price_usd,
|
||||
0
|
||||
) AS asset_price_usd,
|
||||
COALESCE(cacao_depth / pow(10, 8), 0) AS cacao_liquidity,
|
||||
COALESCE(asset_price_usd / NULLIF(cacao_usd, 0), 0) AS cacao_price,
|
||||
COALESCE(
|
||||
cacao_usd,
|
||||
0
|
||||
) AS cacao_price_usd,
|
||||
COALESCE(
|
||||
add_liquidity_count,
|
||||
0
|
||||
) AS add_liquidity_count,
|
||||
COALESCE(add_asset_liquidity_volume / pow(10, 8), 0) AS add_asset_liquidity,
|
||||
COALESCE(add_asset_liquidity_volume / pow(10, 8) * asset_usd, 0) AS add_asset_liquidity_usd,
|
||||
COALESCE(add_cacao_liquidity_volume / pow(10, 8), 0) AS add_cacao_liquidity,
|
||||
COALESCE(add_cacao_liquidity_volume / pow(10, 8) * cacao_usd, 0) AS add_cacao_liquidity_usd,
|
||||
COALESCE(
|
||||
withdraw_count,
|
||||
0
|
||||
) AS withdraw_count,
|
||||
COALESCE(withdraw_asset_volume / pow(10, 8), 0) AS withdraw_asset_liquidity,
|
||||
COALESCE(withdraw_asset_volume / pow(10, 8) * asset_usd, 0) AS withdraw_asset_liquidity_usd,
|
||||
COALESCE(withdraw_cacao_volume / pow(10, 8), 0) AS withdraw_cacao_liquidity,
|
||||
COALESCE(withdraw_cacao_volume / pow(10, 8) * cacao_usd, 0) AS withdraw_cacao_liquidity_usd,
|
||||
COALESCE(impermanent_loss_protection_paid / pow(10, 8), 0) AS il_protection_paid,
|
||||
COALESCE(impermanent_loss_protection_paid / pow(10, 8) * cacao_usd, 0) AS il_protection_paid_usd,
|
||||
COALESCE(
|
||||
average_slip,
|
||||
0
|
||||
) AS average_slip,
|
||||
COALESCE(
|
||||
to_asset_average_slip,
|
||||
0
|
||||
) AS to_asset_average_slip,
|
||||
COALESCE(
|
||||
to_cacao_average_slip,
|
||||
0
|
||||
) AS to_cacao_average_slip,
|
||||
COALESCE(
|
||||
swap_count,
|
||||
0
|
||||
) AS swap_count,
|
||||
COALESCE(
|
||||
to_asset_count,
|
||||
0
|
||||
) AS to_asset_swap_count,
|
||||
COALESCE(
|
||||
to_cacao_count,
|
||||
0
|
||||
) AS to_cacao_swap_count,
|
||||
COALESCE(swap_volume / pow(10, 8), 0) AS swap_volume_cacao,
|
||||
COALESCE(swap_volume / pow(10, 8) * cacao_usd, 0) AS swap_volume_cacao_usd,
|
||||
COALESCE(to_asset_volume / pow(10, 8), 0) AS to_asset_swap_volume,
|
||||
COALESCE(to_cacao_volume / pow(10, 8), 0) AS to_cacao_swap_volume,
|
||||
COALESCE(totalfees / pow(10, 8), 0) AS total_swap_fees_cacao,
|
||||
COALESCE(totalfees / pow(10, 8) * cacao_usd, 0) AS total_swap_fees_usd,
|
||||
COALESCE(to_asset_fees / pow(10, 8), 0) AS total_asset_swap_fees,
|
||||
COALESCE(to_cacao_fees / pow(10, 8), 0) AS total_asset_cacao_fees,
|
||||
COALESCE(
|
||||
unique_member_count,
|
||||
0
|
||||
) AS unique_member_count,
|
||||
COALESCE(
|
||||
unique_swapper_count,
|
||||
0
|
||||
) AS unique_swapper_count,
|
||||
COALESCE(
|
||||
units,
|
||||
0
|
||||
) AS liquidity_units,
|
||||
concat_ws(
|
||||
'-',
|
||||
pbs.day,
|
||||
pbs.asset
|
||||
) AS _unique_key
|
||||
FROM
|
||||
{{ ref('silver__pool_block_statistics') }}
|
||||
pbs
|
||||
LEFT JOIN daily_cacao_price drp
|
||||
ON pbs.day = drp.day
|
||||
AND pbs.asset = drp.pool_name
|
||||
LEFT JOIN pool_fees pf
|
||||
ON pbs.day = pf.day
|
||||
AND pbs.asset = pf.pool_name
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
pbs.day >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
126
models/silver/silver__daily_pool_stats.yml
Normal file
126
models/silver/silver__daily_pool_stats.yml
Normal file
@ -0,0 +1,126 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__daily_pool_stats
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- DAY
|
||||
- POOL_NAME
|
||||
columns:
|
||||
- name: DAY
|
||||
data_tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 2
|
||||
- name: POOL_NAME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SYSTEM_REWARDS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SYSTEM_REWARDS_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_LIQUIDITY
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_PRICE
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_PRICE_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_LIQUIDITY
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_PRICE
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_PRICE_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ADD_LIQUIDITY_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ADD_ASSET_LIQUIDITY
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ADD_ASSET_LIQUIDITY_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ADD_cacao_LIQUIDITY_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: WITHDRAW_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: WITHDRAW_ASSET_LIQUIDITY
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: WITHDRAW_ASSET_LIQUIDITY_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: WITHDRAW_cacao_LIQUIDITY
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: WITHDRAW_cacao_LIQUIDITY_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: IL_PROTECTION_PAID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: IL_PROTECTION_PAID_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: AVERAGE_SLIP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_ASSET_AVERAGE_SLIP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_cacao_AVERAGE_SLIP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SWAP_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_ASSET_SWAP_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_cacao_SWAP_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SWAP_VOLUME_cacao
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SWAP_VOLUME_cacao_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_ASSET_SWAP_VOLUME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_cacao_SWAP_VOLUME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_SWAP_FEES_cacao
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_SWAP_FEES_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_ASSET_SWAP_FEES
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_ASSET_cacao_FEES
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: UNIQUE_MEMBER_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: UNIQUE_SWAPPER_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: LIQUIDITY_UNITS
|
||||
data_tests:
|
||||
- not_null
|
||||
72
models/silver/silver__daily_tvl.sql
Normal file
72
models/silver/silver__daily_tvl.sql
Normal file
@ -0,0 +1,72 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "day",
|
||||
incremental_strategy = 'merge',
|
||||
cluster_by = ['day'],
|
||||
incremental_predicates = ['DBT_INTERNAL_DEST.day >= (select min(day) from ' ~ generate_tmp_view_name(this) ~ ')']
|
||||
) }}
|
||||
|
||||
WITH max_daily_block AS (
|
||||
|
||||
SELECT
|
||||
MAX(block_id) AS block_id,
|
||||
DATE_TRUNC(
|
||||
'day',
|
||||
block_timestamp
|
||||
) AS DAY
|
||||
FROM
|
||||
{{ ref('silver__prices') }}
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
DAY
|
||||
),
|
||||
daily_cacao_price AS (
|
||||
SELECT
|
||||
p.block_id,
|
||||
DAY,
|
||||
AVG(cacao_usd) AS cacao_usd
|
||||
FROM
|
||||
{{ ref('silver__prices') }}
|
||||
p
|
||||
JOIN max_daily_block mdb
|
||||
ON p.block_id = mdb.block_id
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
DAY,
|
||||
p.block_id
|
||||
)
|
||||
SELECT
|
||||
br.day,
|
||||
total_value_pooled AS total_value_pooled,
|
||||
total_value_pooled * cacao_usd AS total_value_pooled_usd,
|
||||
total_value_bonded AS total_value_bonded,
|
||||
total_value_bonded * cacao_usd AS total_value_bonded_usd,
|
||||
total_value_locked AS total_value_locked,
|
||||
total_value_locked * cacao_usd AS total_value_locked_usd
|
||||
FROM
|
||||
{{ ref('silver__total_value_locked') }}
|
||||
br
|
||||
JOIN daily_cacao_price drp
|
||||
ON br.day = drp.day
|
||||
32
models/silver/silver__daily_tvl.yml
Normal file
32
models/silver/silver__daily_tvl.yml
Normal file
@ -0,0 +1,32 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__daily_tvl
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- DAY
|
||||
columns:
|
||||
- name: DAY
|
||||
data_tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 2
|
||||
- name: TOTAL_VALUE_POOLED
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_VALUE_POOLED_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_VALUE_BONDED
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_VALUE_BONDED_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_VALUE_LOCKED
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TOTAL_VALUE_LOCKED_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
26
models/silver/silver__failed_deposit_messages.sql
Normal file
26
models/silver/silver__failed_deposit_messages.sql
Normal file
@ -0,0 +1,26 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx_id,
|
||||
code,
|
||||
memo,
|
||||
asset,
|
||||
amount_e8,
|
||||
from_addr AS from_address,
|
||||
reason,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref(
|
||||
'bronze__failed_deposit_messages'
|
||||
) }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
29
models/silver/silver__failed_deposit_messages.yml
Normal file
29
models/silver/silver__failed_deposit_messages.yml
Normal file
@ -0,0 +1,29 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__failed_deposit_messages
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- EVENT_ID
|
||||
columns:
|
||||
- name: AMOUNT_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: FROM_ADDRESS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: MEMO
|
||||
- name: CODE
|
||||
- name: REASON
|
||||
- name: TX_ID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: EVENT_ID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
21
models/silver/silver__fee_events.sql
Normal file
21
models/silver/silver__fee_events.sql
Normal file
@ -0,0 +1,21 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx AS tx_id,
|
||||
asset,
|
||||
asset_e8,
|
||||
pool_deduct,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__fee_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
19
models/silver/silver__fee_events.yml
Normal file
19
models/silver/silver__fee_events.yml
Normal file
@ -0,0 +1,19 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__fee_events
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TX_ID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: POOL_DEDUCT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
21
models/silver/silver__gas_events.sql
Normal file
21
models/silver/silver__gas_events.sql
Normal file
@ -0,0 +1,21 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
asset,
|
||||
asset_e8,
|
||||
cacao_e8,
|
||||
tx_count,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__gas_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
25
models/silver/silver__gas_events.yml
Normal file
25
models/silver/silver__gas_events.yml
Normal file
@ -0,0 +1,25 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__gas_events
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- EVENT_ID
|
||||
- ASSET
|
||||
- BLOCK_TIMESTAMP
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: CACAO_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TX_COUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
18
models/silver/silver__inactive_vault_events.sql
Normal file
18
models/silver/silver__inactive_vault_events.sql
Normal file
@ -0,0 +1,18 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
add_asgard_addr AS add_asgard_address,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__inactive_vault_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
180
models/silver/silver__liquidity_actions.sql
Normal file
180
models/silver/silver__liquidity_actions.sql
Normal file
@ -0,0 +1,180 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = '_unique_key',
|
||||
incremental_strategy = 'merge',
|
||||
cluster_by = ['block_timestamp::DATE']
|
||||
) }}
|
||||
|
||||
WITH stakes AS (
|
||||
|
||||
SELECT
|
||||
block_timestamp,
|
||||
cacao_tx_id,
|
||||
pool_name,
|
||||
cacao_address,
|
||||
cacao_e8,
|
||||
asset_e8,
|
||||
stake_units,
|
||||
asset_tx_id,
|
||||
asset_address,
|
||||
asset_blockchain,
|
||||
event_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__stake_events') }}
|
||||
),
|
||||
unstakes AS (
|
||||
SELECT
|
||||
block_timestamp,
|
||||
tx_id,
|
||||
pool_name,
|
||||
from_address,
|
||||
to_address,
|
||||
emit_cacao_e8,
|
||||
emit_asset_e8,
|
||||
stake_units,
|
||||
imp_loss_protection_e8,
|
||||
asymmetry,
|
||||
basis_points,
|
||||
event_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__withdraw_events') }}
|
||||
)
|
||||
SELECT
|
||||
b.block_timestamp,
|
||||
b.height AS block_id,
|
||||
cacao_tx_id AS tx_id,
|
||||
'add_liquidity' AS lp_action,
|
||||
se.pool_name,
|
||||
cacao_address AS from_address,
|
||||
NULL AS to_address,
|
||||
COALESCE((cacao_e8 / pow(10, 8)), 0) AS cacao_amount,
|
||||
COALESCE((cacao_e8 / pow(10, 8) * cacao_usd), 0) AS cacao_amount_usd,
|
||||
COALESCE((asset_e8 / pow(10, 8)), 0) AS asset_amount,
|
||||
COALESCE((asset_e8 / pow(10, 8) * asset_usd), 0) AS asset_amount_usd,
|
||||
stake_units,
|
||||
asset_tx_id,
|
||||
asset_address,
|
||||
asset_blockchain,
|
||||
NULL AS il_protection,
|
||||
NULL AS il_protection_usd,
|
||||
NULL AS unstake_asymmetry,
|
||||
NULL AS unstake_basis_points,
|
||||
concat_ws(
|
||||
'-',
|
||||
event_id,
|
||||
se.block_timestamp,
|
||||
COALESCE(
|
||||
tx_id,
|
||||
''
|
||||
),
|
||||
lp_action,
|
||||
se.pool_name,
|
||||
COALESCE(
|
||||
from_address,
|
||||
''
|
||||
),
|
||||
COALESCE(
|
||||
to_address,
|
||||
''
|
||||
),
|
||||
COALESCE(
|
||||
asset_tx_id,
|
||||
''
|
||||
)
|
||||
) AS _unique_key,
|
||||
se._inserted_timestamp
|
||||
FROM
|
||||
stakes se
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON se.block_timestamp = b.timestamp
|
||||
LEFT JOIN {{ ref('silver__prices') }}
|
||||
p
|
||||
ON b.height = p.block_id
|
||||
AND se.pool_name = p.pool_name
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp >= (
|
||||
SELECT
|
||||
MAX(
|
||||
block_timestamp - INTERVAL '1 HOUR'
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
UNION
|
||||
SELECT
|
||||
b.block_timestamp,
|
||||
b.height AS block_id,
|
||||
tx_id,
|
||||
'remove_liquidity' AS lp_action,
|
||||
ue.pool_name,
|
||||
from_address,
|
||||
to_address,
|
||||
COALESCE(emit_cacao_e8 / pow(10, 8), 0) AS cacao_amount,
|
||||
COALESCE(emit_cacao_e8 / pow(10, 8) * cacao_usd, 0) AS cacao_amount_usd,
|
||||
COALESCE(emit_asset_e8 / pow(10, 8), 0) AS asset_amount,
|
||||
COALESCE(emit_asset_e8 / pow(10, 8) * asset_usd, 0) AS asset_amount_usd,
|
||||
stake_units,
|
||||
NULL AS asset_tx_id,
|
||||
NULL AS asset_address,
|
||||
NULL AS asset_blockchain,
|
||||
imp_loss_protection_e8 / pow(
|
||||
10,
|
||||
8
|
||||
) AS il_protection,
|
||||
imp_loss_protection_e8 / pow(
|
||||
10,
|
||||
8
|
||||
) * cacao_usd AS il_protection_usd,
|
||||
asymmetry AS unstake_asymmetry,
|
||||
basis_points AS unstake_basis_points,
|
||||
concat_ws(
|
||||
'-',
|
||||
event_id,
|
||||
ue.block_timestamp,
|
||||
COALESCE(
|
||||
tx_id,
|
||||
''
|
||||
),
|
||||
lp_action,
|
||||
ue.pool_name,
|
||||
COALESCE(
|
||||
from_address,
|
||||
''
|
||||
),
|
||||
COALESCE(
|
||||
to_address,
|
||||
''
|
||||
),
|
||||
COALESCE(
|
||||
asset_tx_id,
|
||||
''
|
||||
)
|
||||
) AS _unique_key,
|
||||
ue._inserted_timestamp
|
||||
FROM
|
||||
unstakes ue
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON ue.block_timestamp = b.timestamp
|
||||
LEFT JOIN {{ ref('silver__prices') }}
|
||||
p
|
||||
ON b.height = p.block_id
|
||||
AND ue.pool_name = p.pool_name
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp >= (
|
||||
SELECT
|
||||
MAX(
|
||||
block_timestamp - INTERVAL '1 HOUR'
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
33
models/silver/silver__liquidity_actions.yml
Normal file
33
models/silver/silver__liquidity_actions.yml
Normal file
@ -0,0 +1,33 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__liquidity_actions
|
||||
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 1
|
||||
- name: BLOCK_ID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: LP_ACTION
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: POOL_NAME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_AMOUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_AMOUNT_USD
|
||||
data_tests:
|
||||
- not_null:
|
||||
where: BLOCK_TIMESTAMP <= SYSDATE() - interval '2 day' AND BLOCK_TIMESTAMP >= '2021-04-13'
|
||||
- name: ASSET_AMOUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: STAKE_UNITS
|
||||
data_tests:
|
||||
- not_null
|
||||
31
models/silver/silver__mayaname_change_events.sql
Normal file
31
models/silver/silver__mayaname_change_events.sql
Normal file
@ -0,0 +1,31 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
owner,
|
||||
chain,
|
||||
address,
|
||||
expire,
|
||||
NAME,
|
||||
fund_amount_e8,
|
||||
registration_fee_e8,
|
||||
event_id,
|
||||
height,
|
||||
tx_id,
|
||||
memo,
|
||||
sender,
|
||||
preferred_asset,
|
||||
affiliate_bps,
|
||||
sub_affiliates,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__mayaname_change_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
18
models/silver/silver__new_node_events.sql
Normal file
18
models/silver/silver__new_node_events.sql
Normal file
@ -0,0 +1,18 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
node_addr AS node_address,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__new_node_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
26
models/silver/silver__outbound_events.sql
Normal file
26
models/silver/silver__outbound_events.sql
Normal file
@ -0,0 +1,26 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
tx AS tx_id,
|
||||
chain AS blockchain,
|
||||
from_addr AS from_address,
|
||||
to_addr AS to_address,
|
||||
asset,
|
||||
asset_e8,
|
||||
memo,
|
||||
in_tx,
|
||||
internal,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__outbound_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id, in_tx
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
40
models/silver/silver__outbound_events.yml
Normal file
40
models/silver/silver__outbound_events.yml
Normal file
@ -0,0 +1,40 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__outbound_events
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- TX_ID
|
||||
- BLOCKCHAIN
|
||||
- FROM_ADDRESS
|
||||
- TO_ADDRESS
|
||||
- ASSET
|
||||
- MEMO
|
||||
- IN_TX
|
||||
- BLOCK_TIMESTAMP
|
||||
- EVENT_ID
|
||||
columns:
|
||||
- name: BLOCKCHAIN
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: FROM_ADDRESS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: TO_ADDRESS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: MEMO
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: IN_TX
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
26
models/silver/silver__pending_liquidity_events.sql
Normal file
26
models/silver/silver__pending_liquidity_events.sql
Normal file
@ -0,0 +1,26 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
pool AS pool_name,
|
||||
asset_tx AS asset_tx_id,
|
||||
asset_chain AS asset_blockchain,
|
||||
asset_addr AS asset_address,
|
||||
asset_e8,
|
||||
cacao_tx AS cacao_tx_ID,
|
||||
cacao_addr AS cacao_address,
|
||||
cacao_e8,
|
||||
pending_type,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__pending_liquidity_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id, asset_addr, cacao_addr
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
28
models/silver/silver__pending_liquidity_events.yml
Normal file
28
models/silver/silver__pending_liquidity_events.yml
Normal file
@ -0,0 +1,28 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__pending_liquidity_events
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- EVENT_ID
|
||||
- ASSET_ADDRESS
|
||||
- CACAO_ADDRESS
|
||||
columns:
|
||||
- name: POOL_NAME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: CACAO_ADDRESS
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: CACAO_E8
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: PENDING_TYPE
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
23
models/silver/silver__pool_balance_change_events.sql
Normal file
23
models/silver/silver__pool_balance_change_events.sql
Normal file
@ -0,0 +1,23 @@
|
||||
{{ config(
|
||||
materialized = 'view'
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
asset,
|
||||
cacao_amt AS cacao_amount,
|
||||
cacao_add,
|
||||
asset_amt AS asset_amount,
|
||||
asset_add,
|
||||
reason,
|
||||
event_id,
|
||||
block_timestamp,
|
||||
DATEADD(
|
||||
ms,
|
||||
__HEVO__LOADED_AT,
|
||||
'1970-01-01'
|
||||
) AS _INSERTED_TIMESTAMP
|
||||
FROM
|
||||
{{ ref('bronze__pool_balance_change_events') }}
|
||||
qualify(ROW_NUMBER() over(PARTITION BY event_id, asset
|
||||
ORDER BY
|
||||
__HEVO__LOADED_AT DESC)) = 1
|
||||
26
models/silver/silver__pool_balance_change_events.yml
Normal file
26
models/silver/silver__pool_balance_change_events.yml
Normal file
@ -0,0 +1,26 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__pool_balance_change_events
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: CACAO_AMOUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: CACAO_ADD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_AMOUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_ADD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: REASON
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
45
models/silver/silver__pool_block_balances.sql
Normal file
45
models/silver/silver__pool_block_balances.sql
Normal file
@ -0,0 +1,45 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = '_unique_key',
|
||||
incremental_strategy = 'merge',
|
||||
cluster_by = ['block_timestamp::DATE']
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
b.block_timestamp,
|
||||
b.height AS block_id,
|
||||
bpd.pool_name,
|
||||
COALESCE(cacao_e8 / pow(10, 8), 0) AS cacao_amount,
|
||||
COALESCE(cacao_e8 / pow(10, 8) * cacao_usd, 0) AS cacao_amount_usd,
|
||||
COALESCE(asset_e8 / pow(10, 8), 0) AS asset_amount,
|
||||
COALESCE(asset_e8 / pow(10, 8) * asset_usd, 0) AS asset_amount_usd,
|
||||
COALESCE(synth_e8 / pow(10, 8), 0) AS synth_amount,
|
||||
COALESCE(synth_e8 / pow(10, 8) * asset_usd, 0) AS synth_amount_usd,
|
||||
concat_ws(
|
||||
'-',
|
||||
bpd.block_timestamp,
|
||||
bpd.pool_name
|
||||
) AS _unique_key,
|
||||
bpd._inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__block_pool_depths') }}
|
||||
bpd
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON bpd.block_timestamp = b.timestamp
|
||||
LEFT JOIN {{ ref('silver__prices') }}
|
||||
p
|
||||
ON b.height = p.block_id
|
||||
AND bpd.pool_name = p.pool_name
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp >= (
|
||||
SELECT
|
||||
MAX(
|
||||
block_timestamp - INTERVAL '1 HOUR'
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
40
models/silver/silver__pool_block_balances.yml
Normal file
40
models/silver/silver__pool_block_balances.yml
Normal file
@ -0,0 +1,40 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__pool_block_balances
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- BLOCK_ID
|
||||
- POOL_NAME
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
data_tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 1
|
||||
- name: BLOCK_ID
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: POOL_NAME
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_AMOUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: cacao_AMOUNT_USD
|
||||
data_tests:
|
||||
- not_null:
|
||||
where: BLOCK_TIMESTAMP <= current_date -2 AND BLOCK_TIMESTAMP >= '2021-04-13'
|
||||
- name: ASSET_AMOUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: ASSET_AMOUNT_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SYNTH_AMOUNT
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: SYNTH_AMOUNT_USD
|
||||
data_tests:
|
||||
- not_null
|
||||
200
models/silver/silver__pool_block_fees.sql
Normal file
200
models/silver/silver__pool_block_fees.sql
Normal file
@ -0,0 +1,200 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "_unique_key",
|
||||
incremental_strategy = 'merge',
|
||||
incremental_predicates = ['DBT_INTERNAL_DEST.DAY >= (select min(DAY) from ' ~ generate_tmp_view_name(this) ~ ')'],
|
||||
cluster_by = ['day']
|
||||
) }}
|
||||
|
||||
WITH all_block_id AS (
|
||||
|
||||
SELECT
|
||||
DATE(
|
||||
b.block_timestamp
|
||||
) AS DAY,
|
||||
pool_name,
|
||||
MAX(
|
||||
A._inserted_timestamp
|
||||
) AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__block_pool_depths') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
DAY,
|
||||
pool_name
|
||||
),
|
||||
total_pool_rewards_tbl AS (
|
||||
SELECT
|
||||
DATE(
|
||||
b.block_timestamp
|
||||
) AS DAY,
|
||||
pool_name,
|
||||
SUM(cacao_e8) AS rewards
|
||||
FROM
|
||||
{{ ref('silver__rewards_event_entries') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
DAY,
|
||||
pool_name
|
||||
),
|
||||
total_liquidity_fees_CACAO_tbl AS (
|
||||
SELECT
|
||||
DATE(
|
||||
b.block_timestamp
|
||||
) AS DAY,
|
||||
pool_name,
|
||||
SUM(liq_fee_in_CACAO_e8) AS total_liquidity_fees_CACAO
|
||||
FROM
|
||||
{{ ref('silver__swap_events') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
DAY,
|
||||
pool_name
|
||||
),
|
||||
liquidity_fees_asset_tbl AS (
|
||||
SELECT
|
||||
DATE(block_timestamp) AS DAY,
|
||||
pool_name,
|
||||
SUM(asset_fee) AS assetLiquidityFees
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
b.block_timestamp,
|
||||
pool_name,
|
||||
CASE
|
||||
WHEN to_asset = 'MAYA.CACAO' THEN 0
|
||||
ELSE liq_fee_e8
|
||||
END AS asset_fee
|
||||
FROM
|
||||
{{ ref('silver__swap_events') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
GROUP BY
|
||||
DAY,
|
||||
pool_name
|
||||
),
|
||||
liquidity_fees_cacao_tbl AS (
|
||||
SELECT
|
||||
DATE(block_timestamp) AS DAY,
|
||||
pool_name,
|
||||
SUM(asset_fee) AS cacaoLiquidityFees
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
b.block_timestamp,
|
||||
pool_name,
|
||||
CASE
|
||||
WHEN to_asset <> 'MAYA.CACAO' THEN 0
|
||||
ELSE liq_fee_e8
|
||||
END AS asset_fee
|
||||
FROM
|
||||
{{ ref('silver__swap_events') }} A
|
||||
JOIN {{ ref('silver__block_log') }}
|
||||
b
|
||||
ON A.block_timestamp = b.timestamp
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
b.block_timestamp :: DATE >= (
|
||||
SELECT
|
||||
MAX(
|
||||
DAY - INTERVAL '2 DAYS' --counteract clock skew
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
GROUP BY
|
||||
DAY,
|
||||
pool_name
|
||||
)
|
||||
SELECT
|
||||
A.day,
|
||||
A.pool_name,
|
||||
COALESCE((rewards / power(10, 8)), 0) AS rewards,
|
||||
COALESCE((total_liquidity_fees_cacao / power(10, 8)), 0) AS total_liquidity_fees_cacao,
|
||||
COALESCE((assetLiquidityFees / power(10, 8)), 0) AS asset_liquidity_fees,
|
||||
COALESCE((cacaoLiquidityFees / power(10, 8)), 0) AS cacao_liquidity_fees,
|
||||
(
|
||||
(COALESCE(total_liquidity_fees_cacao, 0) + COALESCE(rewards, 0)) / power(
|
||||
10,
|
||||
8
|
||||
)
|
||||
) AS earnings,
|
||||
concat_ws(
|
||||
'-',
|
||||
A.day,
|
||||
A.pool_name
|
||||
) AS _unique_key,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
all_block_id A
|
||||
LEFT JOIN total_pool_rewards_tbl b
|
||||
ON A.day = b.day
|
||||
AND A.pool_name = b.pool_name
|
||||
LEFT JOIN total_liquidity_fees_cacao_tbl C
|
||||
ON A.day = C.day
|
||||
AND A.pool_name = C.pool_name
|
||||
LEFT JOIN liquidity_fees_asset_tbl d
|
||||
ON A.day = d.day
|
||||
AND A.pool_name = d.pool_name
|
||||
LEFT JOIN liquidity_fees_cacao_tbl e
|
||||
ON A.day = e.day
|
||||
AND A.pool_name = e.pool_name
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user