AN-1690/topshot_metadata (#36)

* topshot metadata

* adjust stats column names

* bronze view and inserted_timestamp
This commit is contained in:
Jack Forgash 2022-07-06 08:39:24 -06:00 committed by GitHub
parent d8b0e8d0f0
commit a952c32600
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,15 @@
{{ config (
materialized = 'view'
) }}
SELECT
id,
contract,
DATA,
VALUE,
TO_TIMESTAMP_NTZ(SUBSTR(SPLIT_PART(metadata$filename, '/', 4), 1, 10) :: NUMBER, 0) AS _inserted_timestamp
FROM
{{ source(
'flow_external',
'topshot_moments_minted_metadata_api'
) }}

View File

@ -0,0 +1,60 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
cluster_by = ['_inserted_timestamp::DATE'],
unique_key = 'nft_id'
) }}
WITH metadata AS (
SELECT
*
FROM
{{ ref('bronze__topshot_metadata') }}
{% if is_incremental() %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp)
FROM
{{ this }}
)
{% endif %}
qualify ROW_NUMBER() over (
PARTITION BY id
ORDER BY
DATA :getMintedMoment :data :acquiredAt :: TIMESTAMP
) = 1
),
FINAL AS (
SELECT
id AS nft_id,
contract AS nft_collection,
DATA :getMintedMoment :data :id :: STRING AS nbatopshot_id,
DATA :getMintedMoment :data :flowSerialNumber :: NUMBER AS serial_number,
DATA :getMintedMoment :data :setPlay :circulationCount :: NUMBER AS total_circulation,
DATA :getMintedMoment :data :play :description :: VARCHAR AS moment_description,
DATA :getMintedMoment :data :play :stats :playerName :: STRING AS player,
DATA :getMintedMoment :data :play :stats :teamAtMoment :: STRING AS team,
DATA :getMintedMoment :data :play :stats :nbaSeason :: STRING AS season,
DATA :getMintedMoment :data :play :stats :playCategory :: STRING AS play_category,
DATA :getMintedMoment :data :play :stats :playType :: STRING AS play_type,
DATA :getMintedMoment :data :play :stats :dateOfMoment :: TIMESTAMP AS moment_date,
DATA :getMintedMoment :data :set :flowName :: STRING AS set_name,
DATA :getMintedMoment :data :set :flowSeriesNumber :: NUMBER AS set_series_number,
DATA :getMintedMoment :data :play :assets :videos :: ARRAY AS video_urls,
DATA :getMintedMoment :data :play :stats :: OBJECT AS moment_stats_full,
DATA :getMintedMoment :data :play :statsPlayerGameScores :: OBJECT AS player_stats_game,
DATA :getMintedMoment :data :play :statsPlayerSeasonAverageScores :: OBJECT AS player_stats_season_to_date,
_inserted_timestamp
FROM
metadata
WHERE
DATA :getMintedMoment :: STRING IS NOT NULL
)
SELECT
*
FROM
FINAL