diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/_model-versions.md b/docs/modeling-your-data/modeling-your-data-with-dbt/_model-versions.md index 0f9680f9d2..0f341fd0a1 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/_model-versions.md +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/_model-versions.md @@ -50,11 +50,12 @@ import {versions} from '@site/src/componentVersions'; =1.4.0 to <2.0.0 | ✅ | ✅ | ✅ | ✅ | ⚠️ | -| 0.3.0 | >=1.3.0 to <2.0.0 | ✅ | ✅ | ❌ | ✅ | ❌ | -| 0.2.1 | >=1.0.0 to <2.0.0 | ✅ | ✅ | ❌ | ✅ | ❌ | +| snowplow-ecommerce version | dbt versions | BigQuery | Databricks | Redshift | Snowflake | Postgres | Spark | +| -------------------------------- | ----------------- | :------: | :--------: | :------: | :-------: | :------: | :---: | +| ${versions.dbtSnowplowEcommerce} | >=1.4.0 to <2.0.0 | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | +| 0.8.2 | >=1.4.0 to <2.0.0 | ✅ | ✅ | ✅ | ✅ | ⚠️ | ❌ | +| 0.3.0 | >=1.3.0 to <2.0.0 | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | +| 0.2.1 | >=1.0.0 to <2.0.0 | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | `} remarkPlugins={[remarkGfm]} /> > _Postgres is technically supported in the models within the package, however one of the contexts’ names is too long to be loaded via the Postgres Loader._ diff --git a/src/componentVersions.js b/src/componentVersions.js index f65b19063b..67fa577348 100644 --- a/src/componentVersions.js +++ b/src/componentVersions.js @@ -49,7 +49,7 @@ export const versions = { dbtSnowplowMediaPlayer: '0.8.0', dbtSnowplowNormalize: '0.3.5', dbtSnowplowFractribution: '0.3.6', - dbtSnowplowEcommerce: '0.8.2', + dbtSnowplowEcommerce: '0.9.0', // sql runner sqlRunner: '0.10.1', diff --git a/src/components/JsonSchemaValidator/Schemas/dbtEcommerce_0.9.0.json b/src/components/JsonSchemaValidator/Schemas/dbtEcommerce_0.9.0.json new file mode 100644 index 0000000000..da156673ca --- /dev/null +++ b/src/components/JsonSchemaValidator/Schemas/dbtEcommerce_0.9.0.json @@ -0,0 +1,588 @@ +{ + "definitions": { + "passthrough_vars": { + "type": "array", + "description": "> Click the plus sign to add a new entry", + "minItems": 0, + "items": { + "title": "Type", + "oneOf": [ + { + "type": "string", + "title": "Column Name" + }, + { + "type": "object", + "title": "SQL & Alias", + "properties": { + "sql": { + "type": "string", + "title": "Field SQL", + "format": "sql", + "order": 1 + }, + "alias": { + "type": "string", + "title": "Field Alias", + "order": 2 + } + }, + "required": [ + "sql", + "alias" + ], + "additionalProperties": false + } + ] + }, + "uniqueItems": true + } + }, + "type": "object", + "properties": { + "snowplow__atomic_schema": { + "recommendFullRefresh": true, + "order": 3, + "consoleGroup": "required", + "type": "string", + "title": "Schema", + "description": "Schema (dataset) that contains your atomic events", + "longDescription": "The schema (dataset for BigQuery) that contains your atomic events table.", + "packageDefault": "atomic", + "group": "Warehouse and Tracker" + }, + "snowplow__categories_separator": { + "recommendFullRefresh": true, + "order": 67, + "consoleGroup": "advanced", + "type": "string", + "title": "Categories Separator", + "description": "Separator used to split out your subcategories from your main subcategory", + "longDescription": "The separator used to split out your subcategories from your main subcategory. If for example your category field is filled as follows: `books/fiction/magical-fiction` then you should specify `\"/\"` as the separator in order for the subcolumns to be properly parsed.", + "packageDefault": "/", + "group": "Warehouse and Tracker" + }, + "snowplow__database": { + "recommendFullRefresh": true, + "order": 1, + "consoleGroup": "required", + "type": "string", + "title": "Database", + "description": "Database that contains your atomic events", + "longDescription": "The database that contains your atomic events table.", + "packageDefault": "target.database", + "group": "Warehouse and Tracker" + }, + "snowplow__dev_target_name": { + "recommendFullRefresh": false, + "order": 87, + "consoleGroup": "advanced", + "type": "string", + "title": "Dev Target", + "description": "Target name of your development environment as defined in your `profiles.yml` file", + "longDescription": "The [target name](https://docs.getdbt.com/docs/core/connect-data-platform/profiles.yml) of your development environment as defined in your `profiles.yml` file. See the [Manifest Tables](/docs/modeling-your-data/modeling-your-data-with-dbt/package-mechanics/manifest-tables/) section for more details.", + "packageDefault": "dev", + "group": "Warehouse and Tracker" + }, + "snowplow__events_table": { + "recommendFullRefresh": true, + "order": 5, + "consoleGroup": "required", + "type": "string", + "title": "Events Table", + "description": "The name of the table that contains your atomic events", + "longDescription": "The name of the table that contains your atomic events.", + "packageDefault": "events", + "group": "Warehouse and Tracker" + }, + "snowplow__number_category_levels": { + "recommendFullRefresh": false, + "order": 112, + "consoleGroup": "advanced", + "type": "number", + "minimum": 0, + "title": "Number of Category Levels", + "description": "Maximum number of levels of subcategories that exist on your website for products", + "longDescription": "The **maximum** number of levels (depth) of subcategories that exist on your website for products. These subcategories are recorded in the category field of the product context, and should be separated using the separator which is defined below. For example, `books/fiction/magical-fiction` has a level of 3. The value is the number of columns that will be generated in the product tables created by this Snowplow dbt package. Please note that some products can have less than the maximum number of categories specified.", + "packageDefault": "4", + "group": "Warehouse and Tracker" + }, + "snowplow__number_checkout_steps": { + "recommendFullRefresh": true, + "order": 17, + "consoleGroup": "basic", + "type": "number", + "minimum": 0, + "title": "Number of Checkout Steps", + "description": "Index of the checkout step which represents a completed transaction", + "longDescription": "The index of the checkout step which represents a completed transaction. This is required to enable working checkout funnel analysis, and has a default value of 4.", + "packageDefault": "4", + "group": "Warehouse and Tracker" + }, + "snowplow__allow_refresh": { + "recommendFullRefresh": true, + "order": 39, + "consoleGroup": "advanced", + "type": "boolean", + "title": "Allow Refresh", + "group": "Operation and Logic", + "longDescription": "Used as the default value to return from the `allow_refresh()` macro. This macro determines whether the manifest tables can be refreshed or not, depending on your environment. See the [Manifest Tables](/docs/modeling-your-data/modeling-your-data-with-dbt/package-mechanics/manifest-tables/) section for more details.", + "packageDefault": "false" + }, + "snowplow__backfill_limit_days": { + "recommendFullRefresh": false, + "order": 41, + "consoleGroup": "advanced", + "type": "number", + "minimum": 0, + "title": "Backfill Limit", + "group": "Operation and Logic", + "longDescription": "The maximum numbers of days of new data to be processed since the latest event processed. Please refer to the [incremental logic](/docs/modeling-your-data/modeling-your-data-with-dbt/package-mechanics/incremental-processing/#package-state) section for more details.", + "packageDefault": "30", + "description": "The maximum numbers of days of new data to be processed since the latest event processed" + }, + "snowplow__days_late_allowed": { + "recommendFullRefresh": true, + "order": 42, + "consoleGroup": "advanced", + "type": "number", + "minimum": 0, + "title": "Days Late Allowed", + "group": "Operation and Logic", + "longDescription": "The maximum allowed number of days between the event creation and it being sent to the collector. Exists to reduce lengthy table scans that can occur as a result of late arriving data.", + "packageDefault": "3", + "description": "The maximum allowed number of days between the event creation and it being sent to the collector" + }, + "snowplow__ecommerce_event_names": { + "recommendFullRefresh": false, + "order": 40, + "consoleGroup": "advanced", + "title": "E-commerce Event Names", + "group": "Operation and Logic", + "longDescription": "The list of event names that the Snowplow e-commerce package will filter on when extracting events from your atomic events table. If you have included any custom e-commerce events, feel free to add their event name in this list to include them in your data models.", + "packageDefault": "['snowplow_ecommerce_action']", + "type": "array", + "description": "> Click the plus sign to add a new entry", + "minItems": 0, + "items": { + "type": "string" + } + }, + "snowplow__enable_mobile_events": { + "recommendFullRefresh": false, + "order": 13, + "consoleGroup": "required", + "type": "boolean", + "title": "Enable mobile events", + "longDescription": "A boolean whether to use the mobile contexts for mobile e-commerce events in the processing (based on the client session and screen view context).", + "packageDefault": "false", + "group": "Operation and Logic" + }, + "snowplow__lookback_window_hours": { + "recommendFullRefresh": false, + "order": 43, + "consoleGroup": "advanced", + "type": "number", + "minimum": 0, + "title": "Event Lookback Window", + "longDescription": "The number of hours to look before the latest event processed - to account for late arriving data, which comes out of order.", + "packageDefault": "6", + "group": "Operation and Logic", + "description": "The number of hours to look before the latest event processed - to account for late arriving data, which comes out of order" + }, + "snowplow__max_session_days": { + "recommendFullRefresh": true, + "order": 110, + "consoleGroup": "advanced", + "type": "number", + "minimum": 0, + "title": "Max Session Length", + "longDescription": "The maximum allowed session length in days. For a session exceeding this length, all events after this limit will stop being processed. Exists to reduce lengthy table scans that can occur due to long sessions which are usually a result of bots.", + "packageDefault": "3", + "group": "Operation and Logic", + "description": "The maximum allowed session length in days. For a session exceeding this length, all events after this limit will stop being processed" + }, + "snowplow__session_lookback_days": { + "recommendFullRefresh": false, + "order": 121, + "consoleGroup": "advanced", + "type": "number", + "minimum": 0, + "title": "Session Lookback Window", + "longDescription": "Number of days to limit scan on `snowplow_ecommerce_base_sessions_lifecycle_manifest` manifest. Exists to improve performance of model when we have a lot of sessions. Should be set to as large a number as practical.", + "packageDefault": "730", + "group": "Operation and Logic", + "description": "Number of days to limit scan on `snowplow_ecommerce_base_sessions_lifecycle_manifest` manifest" + }, + "snowplow__start_date": { + "recommendFullRefresh": false, + "order": 6, + "consoleGroup": "required", + "type": "string", + "format": "date", + "title": "Start Date", + "group": "Operation and Logic", + "longDescription": "The date to start processing events from in the package on first run or a full refresh, based on `collector_tstamp`", + "packageDefault": "2020-01-01", + "description": "The date to start processing events from in the package on first run or a full refresh, based on `collector_tstamp`" + }, + "snowplow__upsert_lookback_days": { + "recommendFullRefresh": false, + "order": 126, + "consoleGroup": "advanced", + "type": "number", + "minimum": 0, + "title": "Upsert Lookback Days", + "group": "Operation and Logic", + "longDescription": "Number of days to look back over the incremental derived tables during the upsert. Where performance is not a concern, should be set to as long a value as possible. Having too short a period can result in duplicates. Please see the [Snowplow Optimized Materialization](/docs/modeling-your-data/modeling-your-data-with-dbt/package-mechanics/optimized-upserts/) section for more details.", + "packageDefault": "30", + "description": "Number of days to look back over the incremental derived tables during the upsert" + }, + "snowplow__app_id": { + "recommendFullRefresh": false, + "order": 8, + "consoleGroup": "basic", + "type": "array", + "description": "> Click the plus sign to add a new entry", + "minItems": 0, + "title": "App IDs", + "longDescription": "A list of `app_id`s to filter the events table on for processing within the package.", + "packageDefault": "[ ] (no filter applied)", + "group": "Contexts, Filters, and Logs", + "items": { + "type": "string" + } + }, + "snowplow__use_product_quantity": { + "recommendFullRefresh": true, + "order": 37, + "consoleGroup": "basic", + "type": "boolean", + "group": "Operation and Logic", + "longDescription": "Flag to use the product quantity value for the number of products in a transaction, instead of the count of events.", + "packageDefault": "false", + "title": "Use Product Quantity" + }, + "snowplow__disable_ecommerce_carts": { + "recommendFullRefresh": false, + "order": 88, + "consoleGroup": "advanced", + "type": "boolean", + "group": "Contexts, Filters, and Logs", + "longDescription": "Flag to exclude the `Snowplow E-commerce` [cart entity](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/snowplow-ecommerce/#cart-entity) context in case this is disabled or not used in your tracking.", + "packageDefault": "false", + "title": "Disable Carts Module" + }, + "snowplow__disable_ecommerce_checkouts": { + "recommendFullRefresh": false, + "order": 89, + "consoleGroup": "advanced", + "type": "boolean", + "group": "Contexts, Filters, and Logs", + "longDescription": "Flag to exclude the `Snowplow E-commerce` [checkout entity](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/snowplow-ecommerce/#checkout-step-entity) context in case this is disabled or not used in your tracking.", + "packageDefault": "false", + "title": "Disable Checkouts Module" + }, + "snowplow__disable_ecommerce_page_context": { + "recommendFullRefresh": false, + "order": 90, + "consoleGroup": "advanced", + "type": "boolean", + "group": "Contexts, Filters, and Logs", + "longDescription": "Flag to exclude the `Snowplow E-commerce` [page entity](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/snowplow-ecommerce/#ecommerce-page-entity) context in case this is disabled or not used in your tracking.", + "packageDefault": "false", + "title": "Disable Page Context Module" + }, + "snowplow__disable_ecommerce_products": { + "recommendFullRefresh": false, + "order": 91, + "consoleGroup": "advanced", + "type": "boolean", + "group": "Contexts, Filters, and Logs", + "longDescription": "Flag to exclude the `Snowplow E-commerce` [product entity](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/snowplow-ecommerce/#product-entity) context in case this is disabled or not used in your tracking.", + "packageDefault": "false", + "title": "Disable Products Module" + }, + "snowplow__disable_ecommerce_transactions": { + "recommendFullRefresh": false, + "order": 92, + "consoleGroup": "advanced", + "type": "boolean", + "group": "Contexts, Filters, and Logs", + "longDescription": "Flag to exclude the `Snowplow E-commerce` [transaction entity](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/snowplow-ecommerce/#transaction-entity) context in case this is disabled or not used in your tracking.", + "packageDefault": "false", + "title": "Disable Transactions Module" + }, + "snowplow__disable_ecommerce_user_context": { + "recommendFullRefresh": false, + "order": 93, + "consoleGroup": "advanced", + "type": "boolean", + "group": "Contexts, Filters, and Logs", + "longDescription": "Flag to exclude the `Snowplow E-commerce` [user entity](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/snowplow-ecommerce/#ecommerce-user-entity) context in case this is disabled or not used in your tracking.", + "packageDefault": "false", + "title": "Disable User Context Module" + }, + "snowplow__databricks_catalog": { + "recommendFullRefresh": true, + "order": 2, + "consoleGroup": "required", + "type": "string", + "title": "(Databricks) Catalog", + "warehouse": "Databricks", + "group": "Warehouse Specific", + "longDescription": "The catalogue your atomic events table is in. Depending on the use case it should either be the catalog (for Unity Catalog users from databricks connector 1.1.1 onwards, defaulted to `hive_metastore`) or the same value as your `snowplow__atomic_schema` (unless changed it should be 'atomic').", + "packageDefault": "hive_metastore", + "description": "The catalogue your atomic events table is in" + }, + "snowplow__derived_tstamp_partitioned": { + "recommendFullRefresh": false, + "order": 9, + "consoleGroup": "basic", + "type": "boolean", + "warehouse": "Bigquery", + "title": "(Bigquery) Derived Timestamp Partition", + "longDescription": "Boolean to enable filtering the events table on `derived_tstamp` in addition to `collector_tstamp`.", + "packageDefault": "true", + "group": "Warehouse Specific" + }, + "snowplow__session_identifiers": { + "recommendFullRefresh": true, + "order": 46, + "consoleGroup": "advanced", + "title": "Session Identifiers", + "group": "Operation and Logic", + "longDescription": "A list of key:value dictionaries which contain all of the contexts and fields where your session identifiers are located. For each entry in the list, if your map contains the `schema` value `atomic`, then this refers to a field found directly in the atomic `events` table. If you are trying to introduce a context/entity with an identifier in it, the package will look for the context in your events table with the name specified in the `schema` field. It will use the specified value in the `field` key as the field name to access. For Redshift/Postgres, using the `schema` key the package will try to find a table in your `snowplow__events_schema` schema with the same name as the `schema` value provided, and join that. If multiple fields are specified, the package will try to coalesce all fields in the order specified in the list. For a better understanding of the advanced usage of this variable, please see the [Custom Identifiers](/docs/modeling-your-data/modeling-your-data-with-dbt/package-features/custom-identifiers/) section for more details.", + "packageDefault": "[{\"schema\" : \"atomic\", \"field\" : \"domain_sessionid\"}]", + "type": "array", + "description": "> Click the plus sign to add a new entry", + "minItems": 0, + "items": { + "type": "object", + "title": "Identifier", + "properties": { + "schema": { + "type": "string", + "title": "(JSON) schema name for the field", + "order": 1, + "description": "The schema name of your events table, atomic in most use cases, alternatively for sdes/contexts this should instead be the name of the field itself" + }, + "field": { + "type": "string", + "order": 2, + "title": "Field name", + "description": "The name of the field to use as user identifier, alternatively, in case of sdes/contexts it is the name of the element that refers to the field to be extracted" + } + }, + "required": [ + "schema", + "field" + ], + "additionalProperties": false + }, + "uniqueItems": true + }, + "snowplow__session_sql": { + "recommendFullRefresh": true, + "order": 47, + "consoleGroup": "advanced", + "type": "string", + "title": "SQL for your session identifier", + "longDescription": "This allows you to override the `session_identifiers` SQL, to define completely custom SQL in order to build out a session identifier for your events. If you are interested in using this instead of providing identifiers through the `session_identifiers` variable, please see the [Custom Identifiers](/docs/modeling-your-data/modeling-your-data-with-dbt/package-features/custom-identifiers/) section for more details on how to do that.", + "packageDefault": "", + "group": "Operation and Logic" + }, + "snowplow__session_timestamp": { + "recommendFullRefresh": false, + "order": 55, + "consoleGroup": "advanced", + "type": "string", + "title": "Timestamp used for incremental processing, should be your partition field", + "group": "Operation and Logic", + "longDescription": "Determines which timestamp is used to build the sessionization logic. It's a good idea to have this timestamp be the same timestamp as the field you partition your events table on.", + "packageDefault": "collector_tstamp" + }, + "snowplow__user_identifiers": { + "recommendFullRefresh": true, + "order": 48, + "consoleGroup": "advanced", + "title": "User Identifiers", + "group": "Operation and Logic", + "longDescription": "A list of key:value dictionaries which contain all of the contexts and fields where your user identifiers are located. For each entry in the list, if your map contains the `schema` value `atomic`, then this refers to a field found directly in the atomic `events` table. If you are trying to introduce a context/entity with an identifier in it, the package will look for the context in your events table with the name specified in the `schema` field. It will use the specified value in the `field` key as the field name to access. For Redshift/Postgres, using the `schema` key the package will try to find a table in your `snowplow__events_schema` schema with the same name as the `schema` value provided, and join that. If multiple fields are specified, the package will try to coalesce all fields in the order specified in the list. For a better understanding of the advanced usage of this variable, please see the [Custom Identifiers](/docs/modeling-your-data/modeling-your-data-with-dbt/package-features/custom-identifiers/) section for more details.", + "packageDefault": "[{\"schema\" : \"atomic\", \"field\" : \"domain_userid\"}]", + "type": "array", + "description": "> Click the plus sign to add a new entry", + "minItems": 0, + "items": { + "type": "object", + "title": "Identifier", + "properties": { + "schema": { + "type": "string", + "title": "(JSON) schema name for the field", + "order": 1, + "description": "The schema name of your events table, atomic in most use cases, alternatively for sdes/contexts this should instead be the name of the field itself" + }, + "field": { + "type": "string", + "title": "Field name", + "order": 2, + "description": "The name of the field to use as user identifier, alternatively, in case of sdes/contexts it is the name of the element that refers to the field to be extracted" + } + }, + "required": [ + "schema", + "field" + ], + "additionalProperties": false + }, + "uniqueItems": true + }, + "snowplow__user_sql": { + "recommendFullRefresh": true, + "order": 49, + "consoleGroup": "advanced", + "type": "string", + "title": "SQL for your user identifier", + "longDescription": "This allows you to override the `user_identifiers` SQL, to define completely custom SQL in order to build out a user identifier for your events. If you are interested in using this instead of providing identifiers through the `user_identifiers` variable, please see the [Custom Identifiers](/docs/modeling-your-data/modeling-your-data-with-dbt/package-features/custom-identifiers/) section for more details on how to do that.", + "packageDefault": "", + "group": "Operation and Logic" + }, + "snowplow__enable_load_tstamp": { + "recommendFullRefresh": false, + "order": 99, + "consoleGroup": "advanced", + "type": "boolean", + "warehouse": "Redshift", + "title": "(Redshift) Enable load_tstamp", + "longDescription": "Flag to include the `load_tstamp` column in the base events this run model. This should be set to true (the default) unless you are using the Postgres loader or an RDB loader version less than 4.0.0. It must be true to use consent models on Postgres and Redshift.", + "packageDefault": "true", + "group": "Warehouse Specific" + }, + "snowplow__carts_passthroughs": { + "recommendFullRefresh": false, + "order": 66, + "consoleGroup": "advanced", + "title": "Carts Passthroughs", + "group": "Contexts, Filters, and Logs", + "longDescription": "Field(s) to carry through from the events table to the derived table. The field is from the `add_to_cart`, `remove_from_cart`, or `transaction` event record. Aggregation is not supported. A list of either flat column names from the events table or a dictionary with the keys `sql` for the SQL code to select the column and `alias` for the alias of the column in the output.", + "packageDefault": "[ ] (no passthroughs)", + "$ref": "#/definitions/passthrough_vars" + }, + "snowplow__checkout_passthroughs": { + "recommendFullRefresh": false, + "order": 70, + "consoleGroup": "advanced", + "title": "Checkouts Passthroughs", + "group": "Contexts, Filters, and Logs", + "longDescription": "Field(s) to carry through from the events table to the derived table. The field is from the `transaction` or `checkout_step` event record. Aggregation is not supported. A list of either flat column names from the events table or a dictionary with the keys `sql` for the SQL code to select the column and `alias` for the alias of the column in the output.", + "packageDefault": "[ ] (no passthroughs)", + "$ref": "#/definitions/passthrough_vars" + }, + "snowplow__products_passthroughs": { + "recommendFullRefresh": false, + "order": 118, + "consoleGroup": "advanced", + "title": "Products Passthroughs", + "group": "Contexts, Filters, and Logs", + "longDescription": "Field(s) to carry through from the events table to the derived table. Aggregation is not supported. A list of either flat column names from the events table or a dictionary with the keys `sql` for the SQL code to select the column and `alias` for the alias of the column in the output.", + "packageDefault": "[ ] (no passthroughs)", + "$ref": "#/definitions/passthrough_vars" + }, + "snowplow__session_passthroughs": { + "recommendFullRefresh": false, + "order": 122, + "consoleGroup": "advanced", + "title": "Session Passthroughs", + "group": "Contexts, Filters, and Logs", + "longDescription": "Field(s) to carry through from the events table to the derived table. The field is from the first event record in the session based on `derived_tstamp` then `dvce_created_tstamp`. Aggregation is not supported. A list of either flat column names from the events table or a dictionary with the keys `sql` for the SQL code to select the column and `alias` for the alias of the column in the output.", + "packageDefault": "[ ] (no passthroughs)", + "$ref": "#/definitions/passthrough_vars" + }, + "snowplow__transaction_passthroughs": { + "recommendFullRefresh": false, + "order": 125, + "consoleGroup": "advanced", + "title": "Transaction Passthroughs", + "group": "Contexts, Filters, and Logs", + "longDescription": "Field(s) to carry through from the events table to the derived table. The field is from the `transaction` event record. Aggregation is not supported. A list of either flat column names from the events table or a dictionary with the keys `sql` for the SQL code to select the column and `alias` for the alias of the column in the output.", + "packageDefault": "[ ] (no passthroughs)", + "$ref": "#/definitions/passthrough_vars" + }, + "snowplow__entities_or_sdes": { + "recommendFullRefresh": false, + "order": 104, + "consoleGroup": "advanced", + "title": "(Redshift) Entities or SDEs", + "longDescription": "A list of dictionaries defining the `entity` or `self-describing` event tables to join onto your base events table. Please use the tool below or see the section on [Utilizing custom contexts or SDEs](/docs/modeling-your-data/modeling-your-data-with-dbt/package-features/modeling-entities/) for details of the structure.", + "packageDefault": "[]", + "warehouse": "Redshift", + "group": "Warehouse Specific", + "type": "array", + "description": "> Click the plus sign to add a new entry", + "minItems": 0, + "items": { + "type": "object", + "title": "Entity or SDE", + "properties": { + "schema": { + "type": "string", + "title": "Table name", + "description": "Table name", + "order": 1 + }, + "prefix": { + "type": "string", + "title": "Column prefix", + "description": "Prefix to add to columns", + "order": 2 + }, + "alias": { + "type": "string", + "title": "CTE Alias", + "description": "Table alias for the subquery", + "order": 3 + }, + "single_entity": { + "type": "boolean", + "title": "Is single entity?", + "order": 4 + } + }, + "required": [ + "schema", + "prefix" + ], + "additionalProperties": false + }, + "uniqueItems": true + }, + "snowplow__grant_select_to": { + "recommendFullRefresh": false, + "order": 106, + "consoleGroup": "advanced", + "type": "array", + "description": "> Click the plus sign to add a new entry", + "minItems": 0, + "items": { + "type": "string", + "title": "User/Role" + }, + "title": "Grant Select List", + "group": "Warehouse and Tracker", + "longDescription": "A list of users to grant select to all tables created by this package to.", + "packageDefault": "[]" + }, + "snowplow__grant_schema_usage": { + "recommendFullRefresh": false, + "order": 105, + "consoleGroup": "advanced", + "type": "boolean", + "description": "Enable granting usage on schemas", + "title": "Enable grant usage", + "group": "Warehouse and Tracker", + "longDescription": "Enables granting usage on schemas interacted with on a dbt run", + "packageDefault": "true" + } + } +}