diff --git a/models/descriptions/_filename.md b/models/descriptions/_filename.md new file mode 100644 index 0000000..23e22ba --- /dev/null +++ b/models/descriptions/_filename.md @@ -0,0 +1,5 @@ +{% docs _filename %} + +The filename of the source of the data + +{% enddocs %} diff --git a/models/descriptions/inserted_timestamp.md b/models/descriptions/inserted_timestamp.md new file mode 100644 index 0000000..94447a4 --- /dev/null +++ b/models/descriptions/inserted_timestamp.md @@ -0,0 +1,5 @@ +{% docs inserted_timestamp %} + +The timestamp at which the record was initially created and inserted into this table. + +{% enddocs %} diff --git a/models/descriptions/invocation_id.md b/models/descriptions/invocation_id.md new file mode 100644 index 0000000..64a03b7 --- /dev/null +++ b/models/descriptions/invocation_id.md @@ -0,0 +1,5 @@ +{% docs invocation_id %} + +A job ID to identify the run that last modified a record. + +{% enddocs %} diff --git a/models/descriptions/modified_timestamp.md b/models/descriptions/modified_timestamp.md new file mode 100644 index 0000000..abda32e --- /dev/null +++ b/models/descriptions/modified_timestamp.md @@ -0,0 +1,5 @@ +{% docs modified_timestamp %} + +The timestamp at which this record was last modified by an internal process. + +{% enddocs %} diff --git a/models/gold/nft/nft__dim_ufc_strike_metadata.sql b/models/gold/nft/nft__dim_ufc_strike_metadata.sql new file mode 100644 index 0000000..95eaa5c --- /dev/null +++ b/models/gold/nft/nft__dim_ufc_strike_metadata.sql @@ -0,0 +1,23 @@ +{{ config( + materialized = 'view', + meta={ + 'database_tags':{ + 'table': { + 'PURPOSE': 'NFT, UFCSTRIKE' + } + } + }, + tags = ['scheduled_non_core'] +) }} + +SELECT + nft_id, + serial_number, + listing_id, + set_name, + metadata, + inserted_timestamp, + modified_timestamp, + invocation_id +FROM + {{ ref('silver__nft_ufc_strike_metadata') }} diff --git a/models/gold/nft/nft__dim_ufc_strike_metadata.yml b/models/gold/nft/nft__dim_ufc_strike_metadata.yml new file mode 100644 index 0000000..26487ea --- /dev/null +++ b/models/gold/nft/nft__dim_ufc_strike_metadata.yml @@ -0,0 +1,43 @@ +version: 2 + +models: + - name: nft__dim_ufc_strike_metadata + description: |- + UFC Strike NFT Metadata + + columns: + - name: NFT_ID + description: "{{ doc('nft_id')}}" + tests: + - not_null + - unique + + - name: SERIAL_NUMBER + description: "{{ doc('serial_number')}}" + tests: + - not_null + + - name: LISTING_ID + description: "{{ doc('listing_id')}}" + tests: + - not_null + + - name: SET_NAME + description: "{{ doc('set_name')}}" + tests: + - not_null + + - name: METADATA + description: "{{ doc('metadata')}}" + tests: + - not_null + + - name: INSERTED_TIMESTAMP + description: "{{doc('inserted_timestamp')}}" + tests: + - not_null + + - name: MODIFIED_TIMESTAMP + description: "{{doc('modified_timestamp')}}" + tests: + - not_null diff --git a/models/silver/nft/livequery/livequery__allday_moments_metadata_needed.sql b/models/silver/nft/metadata/livequery/livequery__allday_moments_metadata_needed.sql similarity index 100% rename from models/silver/nft/livequery/livequery__allday_moments_metadata_needed.sql rename to models/silver/nft/metadata/livequery/livequery__allday_moments_metadata_needed.sql diff --git a/models/silver/nft/livequery/livequery__moments_parameters.sql b/models/silver/nft/metadata/livequery/livequery__moments_parameters.sql similarity index 100% rename from models/silver/nft/livequery/livequery__moments_parameters.sql rename to models/silver/nft/metadata/livequery/livequery__moments_parameters.sql diff --git a/models/silver/nft/livequery/livequery__moments_parameters.yml b/models/silver/nft/metadata/livequery/livequery__moments_parameters.yml similarity index 100% rename from models/silver/nft/livequery/livequery__moments_parameters.yml rename to models/silver/nft/metadata/livequery/livequery__moments_parameters.yml diff --git a/models/silver/nft/livequery/livequery__null_moments_metadata.sql b/models/silver/nft/metadata/livequery/livequery__null_moments_metadata.sql similarity index 100% rename from models/silver/nft/livequery/livequery__null_moments_metadata.sql rename to models/silver/nft/metadata/livequery/livequery__null_moments_metadata.sql diff --git a/models/silver/nft/livequery/livequery__request_topshot_metadata.py b/models/silver/nft/metadata/livequery/livequery__request_topshot_metadata.py similarity index 100% rename from models/silver/nft/livequery/livequery__request_topshot_metadata.py rename to models/silver/nft/metadata/livequery/livequery__request_topshot_metadata.py diff --git a/models/silver/nft/livequery/livequery__request_topshot_metadata.yml b/models/silver/nft/metadata/livequery/livequery__request_topshot_metadata.yml similarity index 100% rename from models/silver/nft/livequery/livequery__request_topshot_metadata.yml rename to models/silver/nft/metadata/livequery/livequery__request_topshot_metadata.yml diff --git a/models/silver/nft/livequery/livequery__topshot_moments_metadata_needed.sql b/models/silver/nft/metadata/livequery/livequery__topshot_moments_metadata_needed.sql similarity index 100% rename from models/silver/nft/livequery/livequery__topshot_moments_metadata_needed.sql rename to models/silver/nft/metadata/livequery/livequery__topshot_moments_metadata_needed.sql diff --git a/models/silver/nft/livequery/silver__nft_topshot_metadata.sql b/models/silver/nft/metadata/livequery/silver__nft_topshot_metadata.sql similarity index 100% rename from models/silver/nft/livequery/silver__nft_topshot_metadata.sql rename to models/silver/nft/metadata/livequery/silver__nft_topshot_metadata.sql diff --git a/models/silver/nft/livequery/silver__nft_topshot_metadata.yml b/models/silver/nft/metadata/livequery/silver__nft_topshot_metadata.yml similarity index 100% rename from models/silver/nft/livequery/silver__nft_topshot_metadata.yml rename to models/silver/nft/metadata/livequery/silver__nft_topshot_metadata.yml diff --git a/models/silver/nft/livequery/streamline__null_moments_metadata.sql b/models/silver/nft/metadata/livequery/streamline__null_moments_metadata.sql similarity index 100% rename from models/silver/nft/livequery/streamline__null_moments_metadata.sql rename to models/silver/nft/metadata/livequery/streamline__null_moments_metadata.sql diff --git a/models/silver/nft/metadata/onchain/README.md b/models/silver/nft/metadata/onchain/README.md new file mode 100644 index 0000000..1e172fb --- /dev/null +++ b/models/silver/nft/metadata/onchain/README.md @@ -0,0 +1,5 @@ +# On-chain Metadata + +A number of projects on Flow post moment metadata to the chain when a moment is minted. This occurrs over a number of different categories. A moment typically is part of a set, and edition, and/or a series. A moment itself is a representation of a play in some sport or event. Thus, a moment may have a play id, set id, series id, edition id, and more. So, for a full representation of a moment's metadata, each of these components is required. + +The models in this folder were built in at the end of 2022/early 2023 to parse a few projects that had begun to store metadata on chain. As more projects move to this approach, these models will be updated. diff --git a/models/silver/nft/silver__nft_moment_editions_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moment_editions_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moment_editions_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moment_editions_s.sql diff --git a/models/silver/nft/silver__nft_moment_editions_s.yml b/models/silver/nft/metadata/onchain/silver__nft_moment_editions_s.yml similarity index 100% rename from models/silver/nft/silver__nft_moment_editions_s.yml rename to models/silver/nft/metadata/onchain/silver__nft_moment_editions_s.yml diff --git a/models/silver/nft/silver__nft_moment_metadata_final_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moment_metadata_final_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moment_metadata_final_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moment_metadata_final_s.sql diff --git a/models/silver/nft/silver__nft_moment_metadata_final_s.yml b/models/silver/nft/metadata/onchain/silver__nft_moment_metadata_final_s.yml similarity index 100% rename from models/silver/nft/silver__nft_moment_metadata_final_s.yml rename to models/silver/nft/metadata/onchain/silver__nft_moment_metadata_final_s.yml diff --git a/models/silver/nft/silver__nft_moment_metadata_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moment_metadata_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moment_metadata_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moment_metadata_s.sql diff --git a/models/silver/nft/silver__nft_moment_metadata_s.yml b/models/silver/nft/metadata/onchain/silver__nft_moment_metadata_s.yml similarity index 100% rename from models/silver/nft/silver__nft_moment_metadata_s.yml rename to models/silver/nft/metadata/onchain/silver__nft_moment_metadata_s.yml diff --git a/models/silver/nft/silver__nft_moment_minted_2_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moment_minted_2_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moment_minted_2_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moment_minted_2_s.sql diff --git a/models/silver/nft/silver__nft_moment_minted_2_s.yml b/models/silver/nft/metadata/onchain/silver__nft_moment_minted_2_s.yml similarity index 100% rename from models/silver/nft/silver__nft_moment_minted_2_s.yml rename to models/silver/nft/metadata/onchain/silver__nft_moment_minted_2_s.yml diff --git a/models/silver/nft/silver__nft_moment_minted_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moment_minted_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moment_minted_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moment_minted_s.sql diff --git a/models/silver/nft/silver__nft_moment_minted_s.yml b/models/silver/nft/metadata/onchain/silver__nft_moment_minted_s.yml similarity index 100% rename from models/silver/nft/silver__nft_moment_minted_s.yml rename to models/silver/nft/metadata/onchain/silver__nft_moment_minted_s.yml diff --git a/models/silver/nft/silver__nft_moment_series_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moment_series_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moment_series_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moment_series_s.sql diff --git a/models/silver/nft/silver__nft_moment_series_s.yml b/models/silver/nft/metadata/onchain/silver__nft_moment_series_s.yml similarity index 100% rename from models/silver/nft/silver__nft_moment_series_s.yml rename to models/silver/nft/metadata/onchain/silver__nft_moment_series_s.yml diff --git a/models/silver/nft/silver__nft_moment_set_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moment_set_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moment_set_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moment_set_s.sql diff --git a/models/silver/nft/silver__nft_moment_set_s.yml b/models/silver/nft/metadata/onchain/silver__nft_moment_set_s.yml similarity index 100% rename from models/silver/nft/silver__nft_moment_set_s.yml rename to models/silver/nft/metadata/onchain/silver__nft_moment_set_s.yml diff --git a/models/silver/nft/silver__nft_moments_s.sql b/models/silver/nft/metadata/onchain/silver__nft_moments_s.sql similarity index 100% rename from models/silver/nft/silver__nft_moments_s.sql rename to models/silver/nft/metadata/onchain/silver__nft_moments_s.sql diff --git a/models/silver/nft/silver__allday_moments_metadata_error.sql b/models/silver/nft/metadata/silver__allday_moments_metadata_error.sql similarity index 100% rename from models/silver/nft/silver__allday_moments_metadata_error.sql rename to models/silver/nft/metadata/silver__allday_moments_metadata_error.sql diff --git a/models/silver/nft/silver__nft_allday_metadata.sql b/models/silver/nft/metadata/silver__nft_allday_metadata.sql similarity index 100% rename from models/silver/nft/silver__nft_allday_metadata.sql rename to models/silver/nft/metadata/silver__nft_allday_metadata.sql diff --git a/models/silver/nft/metadata/silver__nft_ufc_strike_metadata.sql b/models/silver/nft/metadata/silver__nft_ufc_strike_metadata.sql new file mode 100644 index 0000000..b9581b9 --- /dev/null +++ b/models/silver/nft/metadata/silver__nft_ufc_strike_metadata.sql @@ -0,0 +1,49 @@ +{{ config( + materialized = 'incremental', + incremental_strategy = 'merge', + unique_key = ['nft_id'], + merge_exclude_columns = ["inserted_timestamp"], + tags = ['scheduled_non_core'] +) }} + +WITH metadata AS ( + + SELECT + token_id, + edition, + owner, + listing_id, + set_name, + metadata, + _inserted_timestamp, + _filename + FROM + {{ source( + 'flow_bronze', + 'ufc_strike_metadata' + ) }} + +{% if is_incremental() %} +WHERE + _inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} + ) +{% endif %} +) +SELECT + token_id AS nft_id, + edition AS serial_number, + owner, + listing_id, + set_name, + metadata, + _inserted_timestamp, + _filename, + SYSDATE() AS inserted_timestamp, + SYSDATE() AS modified_timestamp, + '{{invocation_id}}' AS invocation_id +FROM + metadata diff --git a/models/silver/nft/metadata/silver__nft_ufc_strike_metadata.yml b/models/silver/nft/metadata/silver__nft_ufc_strike_metadata.yml new file mode 100644 index 0000000..b5f4892 --- /dev/null +++ b/models/silver/nft/metadata/silver__nft_ufc_strike_metadata.yml @@ -0,0 +1,59 @@ +version: 2 + +models: + - name: silver__nft_ufc_strike_metadata + description: |- + UFC Strike NFT Metadata + + columns: + - name: NFT_ID + description: "{{ doc('nft_id')}}" + tests: + - not_null + - unique + + - name: SERIAL_NUMBER + description: "{{ doc('serial_number')}}" + tests: + - not_null + + - name: OWNER + description: "The last known owner of this NFT at time of data pull" + tests: + - not_null + + - name: LISTING_ID + description: "{{ doc('listing_id')}}" + tests: + - not_null + + - name: SET_NAME + description: "{{ doc('set_name')}}" + tests: + - not_null + + - name: METADATA + description: "{{ doc('metadata')}}" + tests: + - not_null + + - name: _INSERTED_TIMESTAMP + description: "{{doc('_inserted_timestamp')}}" + + - name: _FILENAME + description: "{{doc('_filename')}}" + + - 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 diff --git a/models/sources.yml b/models/sources.yml index 4da7e82..e551fb3 100644 --- a/models/sources.yml +++ b/models/sources.yml @@ -125,12 +125,16 @@ sources: - name: TRANSACTION_RESULTS_MAINNET_21 - name: TRANSACTION_RESULTS_MAINNET_22 - - - name: crosschain_silver database: crosschain schema: silver tables: - name: hourly_prices_coin_gecko - name: hourly_prices_coin_market_cap - - name: number_sequence \ No newline at end of file + - name: number_sequence + + - name: flow_bronze + database: flow + schema: bronze + tables: + - name: ufc_strike_metadata