Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AN-4040/Aurora MAAs #54

Merged
merged 3 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions models/descriptions/active_day.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% docs active_day %}

Date of activity.

{% enddocs %}
5 changes: 5 additions & 0 deletions models/descriptions/id.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% docs id %}

A unique identifier for the record.

{% enddocs %}
5 changes: 5 additions & 0 deletions models/descriptions/inserted_timestamp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% docs inserted_timestamp %}

The timestamp at which the record was initially created and inserted into this table.

{% enddocs %}
5 changes: 5 additions & 0 deletions models/descriptions/invocation_id.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% docs invocation_id %}

A job ID to identify the run that last modified a record.

{% enddocs %}
5 changes: 5 additions & 0 deletions models/descriptions/maa.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% docs maa %}

Monthly Active Accounts (wallets), as determined by transaction signers.

{% enddocs %}
5 changes: 5 additions & 0 deletions models/descriptions/modified_timestamp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% docs modified_timestamp %}

The timestamp at which this record was last modified by an internal process.

{% enddocs %}
13 changes: 13 additions & 0 deletions models/gold/atlas/atlas__fact_maas.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{ config(
materialized = 'view',
tags = ['atlas']
) }}

SELECT
atlas_maa_id AS fact_maas_id,
day,
maa,
inserted_timestamp,
modified_timestamp
FROM
{{ ref('silver__atlas_maa') }}
34 changes: 34 additions & 0 deletions models/gold/atlas/atlas__fact_maas.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
version: 2

models:
- name: atlas__fact_maas
description: |-
Monthly Active Accounts (wallets) on Aurora, calculated over a rolling 30 day window. An active account, here, is defined as the signing of at least one transaction.

columns:
- name: fact_maas_id
description: "{{ doc('id') }}"
tests:
- not_null
- unique

- name: day
description: "{{ doc('active_day') }}"
tests:
- not_null
- unique

- name: maa
description: "{{ doc('maa')}}"
tests:
- not_null

- name: inserted_timestamp
description: "{{ doc('inserted_timestamp') }}"
tests:
- not_null

- name: modified_timestamp
description: "{{ doc('modified_timestamp') }}"
tests:
- not_null
File renamed without changes.
File renamed without changes.
79 changes: 79 additions & 0 deletions models/silver/atlas/silver__atlas_maa.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{{ config(
materialized = 'incremental',
incremental_stratege = 'merge',
merge_exclude_columns = ["inserted_timestamp"],
unique_key = 'day',
tags = ['atlas']
) }}

WITH dates AS (

SELECT
date_day AS DAY
FROM
{{ source(
'crosschain',
'dim_dates'
) }}

{% if is_incremental() %}
WHERE
date_day > (
SELECT
MAX(DAY)
FROM
{{ this }}
)
AND date_day < SYSDATE() :: DATE
{% else %}
WHERE
date_day BETWEEN '2020-07-22'
AND SYSDATE() :: DATE
{% endif %}
),
txns AS (
SELECT
block_timestamp :: DATE AS active_day,
from_address
FROM
{{ ref('silver__transactions') }}

{% if is_incremental() %}
WHERE
block_timestamp :: DATE >= (
SELECT
MAX(DAY)
FROM
{{ this }}
) - INTERVAL '30 days'
{% endif %}
),
FINAL AS (
SELECT
DAY,
COUNT(
DISTINCT from_address
) AS maa
FROM
dates d
LEFT JOIN txns t
ON t.active_day < d.day
AND t.active_day >= d.day - INTERVAL '30 day'
WHERE
DAY != CURRENT_DATE()
GROUP BY
1
ORDER BY
1 DESC
)
SELECT
{{ dbt_utils.generate_surrogate_key(
['day']
) }} AS atlas_maa_id,
DAY,
maa,
SYSDATE() AS inserted_timestamp,
SYSDATE() AS modified_timestamp,
'{{ invocation_id }}' AS invocation_id
FROM
FINAL
39 changes: 39 additions & 0 deletions models/silver/atlas/silver__atlas_maa.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
version: 2

models:
- name: silver__atlas_maa
description: |-
Monthly Active Accounts (wallets) on Aurora, calculated over a rolling 30 day window. An active account, here, is defined as the signing of at least one transaction.

columns:
- name: atlas_maa_id
description: "{{ doc('id') }}"
tests:
- not_null
- unique

- name: day
description: "{{ doc('active_day') }}"
tests:
- not_null
- unique

- name: maa
description: "{{ doc('maa')}}"
tests:
- not_null

- name: inserted_timestamp
description: "{{ doc('inserted_timestamp') }}"
tests:
- not_null

- name: modified_timestamp
description: "{{ doc('modified_timestamp') }}"
tests:
- not_null

- name: invocation_id
description: "{{ doc('invocation_id') }}"
tests:
- not_null