From 4c7d830a13e812c0d0cdb20674fad5c6779552da Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 17 Jan 2025 12:14:20 +0000 Subject: [PATCH] Add setup instructions --- docs/api-reference/failed-events/index.md | 50 +-- .../images/athena-count.png | Bin .../images/athena-create-table.png | Bin .../images/bigquery-count.png | Bin .../file-storage/index.md | 290 +++++++++++++++++- .../exploring-failed-events/querying/index.md | 276 ----------------- .../warehouse-lake/images/enable-stream.png | Bin 0 -> 154832 bytes .../warehouse-lake/images/loader-type.png | Bin 0 -> 31165 bytes .../warehouse-lake/index.md | 131 ++++++++ .../manual/getting-started/index.md | 6 +- .../snowplow-inspector/overview/index.md | 2 +- docs/fundamentals/failed-events/index.md | 16 +- .../what-is-deployed/index.md | 2 +- src/remark/abbreviations.js | 2 +- static/_redirects | 3 + 15 files changed, 459 insertions(+), 319 deletions(-) rename docs/data-product-studio/data-quality/failed-events/exploring-failed-events/{querying => file-storage}/images/athena-count.png (100%) rename docs/data-product-studio/data-quality/failed-events/exploring-failed-events/{querying => file-storage}/images/athena-create-table.png (100%) rename docs/data-product-studio/data-quality/failed-events/exploring-failed-events/{querying => file-storage}/images/bigquery-count.png (100%) delete mode 100644 docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/index.md create mode 100644 docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/images/enable-stream.png create mode 100644 docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/images/loader-type.png create mode 100644 docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/index.md diff --git a/docs/api-reference/failed-events/index.md b/docs/api-reference/failed-events/index.md index 1ee4d25802..a8f959e0d7 100644 --- a/docs/api-reference/failed-events/index.md +++ b/docs/api-reference/failed-events/index.md @@ -3,7 +3,9 @@ title: "Failed event types" sidebar_position: 15 --- -## Where do Failed Events originate? +This page lists all the possible types of [failed events](/docs/fundamentals/failed-events/index.md). + +## Where do failed events originate? While an event is being processed by the pipeline it is checked to ensure it meets the specific formatting or configuration expectations; these include checks like: does it match the schema it is associated with, were Enrichments successfully applied and was the payload sent by the tracker acceptable. @@ -17,7 +19,7 @@ Once the Collector payload successfully reaches the validation and enrichment st ::: -## Schema Violation +## Schema violation This failure type is produced during the process of [validation and enrichment](/docs/pipeline/enrichments/what-is-enrichment/index.md). It concerns the [self-describing events](/docs/fundamentals/events/index.md#self-describing-events) and [entities](/docs/fundamentals/entities/index.md) which can be attached to your snowplow event. @@ -25,14 +27,14 @@ This failure type is produced during the process of [validation and enrichment]( In order for an event to be processed successfully: -1. There must be a schema in an [iglu repository](/docs/api-reference/iglu/iglu-repositories/index.md) corresponding to each self-describing event or entity. The enrichment app must be able to look up the schema in order to validate the event. +1. There must be a schema in an [Iglu repository](/docs/api-reference/iglu/iglu-repositories/index.md) corresponding to each self-describing event or entity. The enrichment app must be able to look up the schema in order to validate the event. 2. Each self-describing event or entity must conform to the structure described in the schema. For example, all required fields must be present, and all fields must be of the expected type. -If your pipeline is generating schema violations, it might mean there is a problem with your tracking, or a problem with your [iglu resolver](/docs/api-reference/iglu/iglu-resolver/index.md) which lists where schemas should be found. The error details in the schema violation JSON object should give you a hint about what the problem might be. +If your pipeline is generating schema violations, it might mean there is a problem with your tracking, or a problem with your [Iglu resolver](/docs/api-reference/iglu/iglu-resolver/index.md) which lists where schemas should be found. The error details in the schema violation JSON object should give you a hint about what the problem might be. -Snowplow BDP customers should check in the Snowplow BDP Console that all data structures are correct and have been [promoted to production](/docs/data-product-studio/data-structures/manage/ui/index.md). Snowplow Community Edition users should check that the Enrichment app is configured with an [iglu resolver file](/docs/api-reference/iglu/iglu-resolver/index.md) that points to a repository containing the schemas. +Snowplow BDP customers should check in the Snowplow BDP Console that all data structures are correct and have been [promoted to production](/docs/data-product-studio/data-structures/manage/ui/index.md). Snowplow Community Edition users should check that the Enrichment app is configured with an [Iglu resolver file](/docs/api-reference/iglu/iglu-resolver/index.md) that points to a repository containing the schemas. -Next, check the tracking code in your custom application, and make sure the entities you are sending conform the schema definition. +Next, check the tracking code in your custom application, and make sure the entities you are sending conform to the schema definition. Once you have fixed your tracking, you might want to also [recover the failed events](/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/index.md), to avoid any data loss. @@ -54,7 +56,7 @@ There are many reasons why an enrichment will fail, but here are some examples: - You are using the [IP lookup enrichment](/docs/pipeline/enrichments/available-enrichments/ip-lookup-enrichment/index.md) but have mis-configured the location of the MaxMind database. - You are using the [custom API request enrichment](/docs/pipeline/enrichments/available-enrichments/custom-api-request-enrichment/index.md) but the API server is not responding. - The raw event contained an unstructured event field or a context field which was not valid JSON. -- An iglu server responded with an unexpected error response, so the event schema could not be resolved. +- An Iglu server responded with an unexpected error response, so the event schema could not be resolved. If your pipeline is generating enrichment failures, it might mean there is a problem with your enrichment configuration. The error details in the enrichment failure JSON object should give you a hint about what the problem might be. @@ -66,7 +68,7 @@ Enrichment failure schema can be found [here](https://github.com/snowplow/iglu-c -## Collector Payload Format Violation +## Collector payload format violation This failure type is produced by the [enrichment](/docs/pipeline/enrichments/what-is-enrichment/index.md) application, when Collector payloads from the raw stream are deserialized from thrift format. @@ -87,7 +89,7 @@ Collector payload format violation schema can be found [here](https://github.com -## Adaptor Failure +## Adaptor failure This failure type is produced by the [enrichment](/docs/pipeline/enrichments/what-is-enrichment/index.md) application, when it tries to interpret a Collector payload from the raw stream as a http request from a [3rd party webhook](/docs/sources/webhooks/index.md). @@ -112,7 +114,7 @@ Adapter failure schema can be found [here](https://github.com/snowplow/iglu-cent -## Tracker Protocol Violation +## Tracker protocol violation This failure type is produced by the [enrichment](/docs/pipeline/enrichments/what-is-enrichment/index.md) application, when a http request does not conform to our [Snowplow Tracker Protocol](/docs/sources/trackers/snowplow-tracker-protocol/index.md). @@ -130,7 +132,7 @@ Tracker protocol violation schema can be found [here](https://github.com/snowplo -## Size Violation +## Size violation This failure type can be produced either by the [Collector](/docs/api-reference/stream-collector/index.md) or by the [enrichment](/docs/pipeline/enrichments/what-is-enrichment/index.md) application. It happens when the size of the raw event or enriched event is too big for the output message queue. In this case it will be truncated and wrapped in a size violation failed event instead. @@ -138,23 +140,25 @@ This failure type can be produced either by the [Collector](/docs/api-reference/ Failures of this type cannot be [recovered](/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/index.md). The best you can do is to fix any application that is sending over-sized events. -Size violation schema can be found [here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/size_violation/jsonschema/1-0-0). +Because this failure is handled during collection or enrichment, events in the real time good stream are free of this violation type. + +The size violation schema can be found [here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/size_violation/jsonschema/1-0-0). -## Loader Parsing Error +## Loader parsing error -This failure type can be produced by [any loader](/docs/api-reference/loaders-storage-targets/index.md), if the enriched event in the real time good stream cannot be parsed as a canonical TSV event format. For example, if line has not enough columns (not 131) or event_id is not UUID. This error type is uncommon and unexpected, because it can only be caused by an invalid message in the stream of validated enriched events. +This failure type can be produced by [any loader](/docs/api-reference/loaders-storage-targets/index.md), if the enriched event in the real time good stream cannot be parsed as a canonical TSV event format. For example, if the row does not have enough columns (131 are expected) or the `event_id` is not a UUID. This error type is uncommon and unexpected, because it can only be caused by an invalid message in the stream of validated enriched events.
This failure type cannot be [recovered](/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/index.md). -Loader parsing error schema can be found [here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/loader_parsing_error/jsonschema/2-0-0). +The loader parsing error schema can be found [here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/loader_parsing_error/jsonschema/2-0-0).
-## Loader Iglu Error +## Loader Iglu error This failure type can be produced by [any loader](/docs/api-reference/loaders-storage-targets/index.md) and describes an error using the [Iglu](/docs/api-reference/iglu/index.md) subsystem. @@ -162,17 +166,17 @@ This failure type can be produced by [any loader](/docs/api-reference/loaders-st For example: -- A schema is not available in any of the repositories listed in the [iglu resolver](/docs/api-reference/iglu/iglu-resolver/index.md). -- Some loaders (e.g. [RDB loader](/docs/api-reference/loaders-storage-targets/snowplow-rdb-loader/index.md) and [Postgres loader](/docs/api-reference/loaders-storage-targets/snowplow-postgres-loader/index.md)) make use of the "schema list" api endpoints, which are only implemented for an [iglu-server](/docs/api-reference/iglu/iglu-repositories/iglu-server/index.md) repository. A loader iglu error will be generated if the schema is in a [static repo](/docs/api-reference/iglu/iglu-repositories/static-repo/index.md) or [embedded repo](/docs/api-reference/iglu/iglu-repositories/jvm-embedded-repo/index.md). +- A schema is not available in any of the repositories listed in the [Iglu resolver](/docs/api-reference/iglu/iglu-resolver/index.md). +- Some loaders (e.g. [RDB loader](/docs/api-reference/loaders-storage-targets/snowplow-rdb-loader/index.md) and [Postgres loader](/docs/api-reference/loaders-storage-targets/snowplow-postgres-loader/index.md)) make use of the "schema list" api endpoints, which are only implemented for an [Iglu server](/docs/api-reference/iglu/iglu-repositories/iglu-server/index.md) repository. A loader Iglu error will be generated if the schema is in a [static repo](/docs/api-reference/iglu/iglu-repositories/static-repo/index.md) or [embedded repo](/docs/api-reference/iglu/iglu-repositories/jvm-embedded-repo/index.md). - The loader cannot auto-migrate a database table. If a schema version is incremented from `1-0-0` to `1-0-1` then it is expected to be [a non-breaking change](/docs/api-reference/iglu/common-architecture/schemaver/index.md), and many loaders (e.g. RDB loader) attempt to execute a `ALTER TABLE` statement to facilitate the new schema in the warehouse. But if the schema change is breaking (e.g. string field changed to integer field) then the database migration is not possible. This failure type cannot be [recovered](/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/index.md). -Loader iglu error schema can be found [here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/loader_iglu_error/jsonschema/2-0-0). +Loader Iglu error schema can be found [here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/loader_iglu_error/jsonschema/2-0-0). -## Loader Recovery Error +## Loader recovery error Currently only the [BigQuery repeater](/docs/api-reference/loaders-storage-targets/bigquery-loader/index.md#block-8db848d4-0265-4ffa-97db-0211f4e2293d) generates this error. We call it "loader recovery error" because the purpose of the repeater is to recover from previously failed inserts. It represents the case when the software could not re-insert the row into the database due to a runtime failure or invalid data in a source. @@ -184,7 +188,7 @@ Loader recovery error schema can be found [here](https://github.com/snowplow/igl -## Loader Runtime Error +## Loader runtime error This failure type can be produced by any loader and describes generally any runtime error that we did not catch. For example, a DynamoDB outage, or a null pointer exception. This error type is uncommon and unexpected, and it probably indicates a mistake in the configuration or a bug in the software. @@ -196,7 +200,7 @@ Loader runtime error schema can be found [here](https://github.com/snowplow/iglu -## Relay Failure +## Relay failure This failure type is only produced by relay jobs, which transfer Snowplow data into a 3rd party platform. This error type is uncommon and unexpected, and it probably indicates a mistake in the configuration or a bug in the software. @@ -208,7 +212,7 @@ Relay failure schema can be found [here](https://github.com/snowplow/iglu-centra -## Generic Error +## Generic error This is a failure type for anything that does not fit into the other categories, and is unlikely enough that we have not created a special category. The failure error messages should give you a hint about what has happened. diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/images/athena-count.png b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/images/athena-count.png similarity index 100% rename from docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/images/athena-count.png rename to docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/images/athena-count.png diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/images/athena-create-table.png b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/images/athena-create-table.png similarity index 100% rename from docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/images/athena-create-table.png rename to docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/images/athena-create-table.png diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/images/bigquery-count.png b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/images/bigquery-count.png similarity index 100% rename from docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/images/bigquery-count.png rename to docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/images/bigquery-count.png diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/index.md b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/index.md index 18517d090c..2ae68943ee 100644 --- a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/index.md +++ b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/index.md @@ -1,10 +1,15 @@ --- title: "Accessing failed events in file storage" -sidebar_label: "Using S3 or GCS" -sidebar_position: 1 +sidebar_label: "In file storage" +sidebar_position: 2 --- -When failed events are generated on your pipeline the raw event payload along with details about the failure are saved into file storage (S3 on AWS, GCS on Google Cloud). +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +On AWS and GCP, when failed events are generated on your pipeline, the raw event payload along with details about the failure are saved into file storage (S3 on AWS, GCS on Google Cloud). :::info Community Edition quick start guide on GCP @@ -12,9 +17,12 @@ If you followed the [Community Edition quick start guide](/docs/get-started/snow ::: +## Retrieving raw data + You can directly access and download examples of events that are failing from file storage, this is useful for further investigation and also required to design a recovery operation. -## Retrieving raw data from S3 on AWS + + - Login to your AWS Console account and navigate to the sub-account that contains your Snowplow pipeline - Navigate to your S3 storage buckets @@ -38,7 +46,8 @@ Step 3 - select the relevant folder for your error type Step 4 - use the date and timestamps to find a batch of failed events that will contain an example of the event you wish to find -## Retrieving raw data from GCS on GCP + + - Login to your Google Cloud Platform account and navigate to the project that contains your Snowplow pipeline - Navigate to your Google Cloud Storage buckets @@ -65,3 +74,274 @@ Step 4 - drill down into the folder structure by year, month, day and time ![](images/failed-evs-gcs-7.jpg) Step 5 - once you find the raw files you can download them and view them in a text editor + + + + +## Using Athena or BigQuery + +[Athena](https://aws.amazon.com/athena/) on AWS and [BigQuery](https://cloud.google.com/bigquery) on GCP are tools that let you query your failed events, using the cloud storage files as a back-end data source. + +```sql +SELECT data.failure.messages FROM adapter_failures +WHERE from_iso8601_timestamp(data.failure.timestamp) > timestamp '2020-04-01' +``` + +This approach is great for debugging your pipeline without the need to load your failed events into a separate database. + +Before you can query this data, you need to create corresponding tables in Athena or BigQuery as we explain below. Each different failed event type (e.g. schema violations, adapter failures) has a different schema, so you will need one table per event type. + +## Creating the tables + + + + +Go to [the Athena dashboard](https://eu-central-1.console.aws.amazon.com/athena/home) and use the query editor. Start by creating a database (replace `{{ DATABASE }}` with the name of your pipeline, e.g. `prod1` or `qa1`): + +```sql +CREATE DATABASE IF NOT EXISTS {{ DATABASE }} +``` + +Then run each sql statement provided in the [badrows-tables repository](https://github.com/snowplow-incubator/snowplow-badrows-tables/tree/master/athena) by copying them into the Athena query editor. We recommend creating all tables, although you can skip the ones you are not interested in. + +:::info Placeholders + +Note that the sql statements contain a few placeholders which you will need to edit before you can create the tables: + +* `{{ DATABASE }}` — as above, change this to the name of your pipeline, e.g. `prod1` or `qa1`. +* `s3://{{ BUCKET }}/{{ PIPELINE }}` — this should point to the directory in S3 where your bad rows files are stored. + +::: + +![Creating a table in Athena](images/athena-create-table.png) + + + + +:::info Community Edition quick start guide on GCP + +If you followed the [Community Edition quick start guide](/docs/get-started/snowplow-community-edition/quick-start/index.md), you will need to manually deploy the [GCS Loader](/docs/api-reference/loaders-storage-targets/google-cloud-storage-loader/index.md) to save failed events into GCS, as it’s currently not included in the Terraform scripts. + +::: + +:::note + +These instructions make use of the [bq command-line tool](https://cloud.google.com/bigquery/docs/bq-command-line-tool) which is packaged with the [google cloud sdk](https://cloud.google.com/sdk/docs). Follow the sdk instructions for how to [initialize and authenticate the sdk](https://cloud.google.com/sdk/docs/initializing). Also take a look at the [BigQuery dashboard](https://console.cloud.google.com/bigquery) as you run these commands, so you can see your tables as you create them. + +::: + +Create a dataset to contain your failed event tables: + +```bash +bq mk --data_location=EU bad_rows_prod1 +# Dataset 'my-snowplow-project:bad_rows_prod1' successfully created. +``` + +The `--data-location` should match the location of your bad rows bucket. Also replace `prod1` with the name of your pipeline. + +Next, download the table definitions provided in the [badrows-tables repository](https://github.com/snowplow-incubator/snowplow-badrows-tables/tree/master/bigquery) in JSON format. + +:::info Placeholders + +Each table definition contains a `{{ BUCKET }}` placeholder which needs to be changed to the GCS bucket where your bad rows files are stored (e.g. `sp-storage-loader-bad-prod1-com_acme`). + +::: + +Now run `bq mk` for each table definition in turn. Use the `--external_table_definition` parameter so that BigQuery uses the bucket as the back-end data source. Here is how to run the command for the first three tables (note that you should change the dataset name `bad_rows_prod1` to match the dataset you just created): + +```bash +bq mk \ + --display_name="Adapter failures" \ + --external_table_definition=./adapter_failures.json \ + bad_rows_prod1.adapter_failures + +# Table 'my-snowplow-project:bad_rows_prod1.adapter_failures' successfully created. + +bq mk \ + --display_name "Schema violations" \ + --external_table_definition=./schema_violations.json \ + bad_rows_prod1.schema_violations + +# Table 'my-snowplow-project:bad_rows_prod1.schema_violations' successfully created. + +bq mk \ + --display_name "Tracker protocol violations" \ + --external_table_definition=./tracker_protocol_violations.json \ + bad_rows_prod1.tracker_protocol_violations + +# Table 'my-snowplow-project:bad_rows_prod1.tracker_protocol_violations' successfully created. +``` + +Run the corresponding commands for the remaining table definitions. We recommend creating all tables, although you can skip the ones you are not interested in. + +:::tip Why not just auto-detect the schemas? + +BigQuery has an “Auto-detect” feature to automatically generate the table definition for you by inspecting the file contents. So you might wonder why it is necessary to provide explicit schema definitions for your tables. + +There are two potential pitfalls when using the autogenerated schema with the Snowplow bad rows files: + +- _Optional fields_. BigQuery might not “notice” that a field exists, depending on the sample of data used to detect the schema. +- _Polymorphic fields_, e.g. `error` that can be either a string or an object. BigQuery will throw an exception if it sees an unexpected value for a field. Our table definitions use the `JSON` data type for these fields. + +::: + + + + +## Querying the data + + + + +As example of using your Athena tables, you might start by getting counts of each failed event type from the last week. Repeat this query for each table you have created: + +```sql +SELECT COUNT(*) FROM schema_violations +WHERE from_iso8601_timestamp(data.failure.timestamp) > DATE_ADD('day', -7, now()) +``` + +![Athena query](images/athena-count.png) + +If you have schema violations, you might want to find which tracker sent the event: + +```sql +SELECT data.payload.enriched.app_id, COUNT(*) FROM schema_violations +WHERE from_iso8601_timestamp(data.failure.timestamp) > DATE_ADD('day', -7, now()) +GROUP BY data.payload.enriched.app_id +``` + +You can do a deeper dive into the error messages to get a explanation of the last 10 failures: + +```sql +SELECT message.field AS field, + message.value AS value, + message.error AS error, + message.json AS json, + message.schemaKey AS schemaKey, + message.schemaCriterion AS schemaCriterion +FROM schema_violations +CROSS JOIN UNNEST(data.failure.messages) AS t(message) +ORDER BY data.failure.timestamp DESC +LIMIT 10 +``` + + + + +You can query your tables from the query editor in the [BigQuery console](https://console.cloud.google.com/bigquery). You might want to start by getting counts of each failed event type from the last week. This query will work, but it is relatively expensive because it will scan all files in the `schema_violations` directory: + +```sql +SELECT COUNT(*) FROM bad_rows_prod1.schema_violations +WHERE data.failure.timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY); +``` + +You can construct a more economical query by using the `_FILE_NAME` pseudo column to restrict the scan to files from the last week: + +```sql +SELECT COUNT(*) FROM bad_rows_prod1.schema_violations +WHERE DATE(PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S', LTRIM(REGEXP_EXTRACT(_FILE_NAME, 'output-[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+'), 'output-'))) >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY); +``` + +You can repeat that query for each table you created in your bad rows dataset. + +![BigQuery query](images/bigquery-count.png) + +If you have schema violations, you might want to find which tracker sent the event: + +```sql +SELECT data.payload.enriched.app_id, COUNT(*) FROM bad_rows_prod1.schema_violations +WHERE DATE(PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S', LTRIM(REGEXP_EXTRACT(_FILE_NAME, 'output-[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+'), 'output-'))) >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) +GROUP BY data.payload.enriched.app_id; +``` + +If you have tracker protocol failures, you can do a deeper dive into the error messages to get a explanation of the last 10 failures: + +```sql +SELECT message.field AS field, + message.value AS value, + message.error AS error, + message.expectation AS expectation, + message.schemaKey AS schemaKey, + message.schemaCriterion AS schemaCriterion +FROM bad_rows_prod1.tracker_protocol_violations, +UNNEST(data.failure.messages) AS message +WHERE DATE(PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S', LTRIM(REGEXP_EXTRACT(_FILE_NAME, 'output-[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+'), 'output-'))) >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) +ORDER BY data.failure.timestamp DESC +LIMIT 10; +``` + +
+ Digging deeper + +You might notice that the `error` field in the result of the query above has the `JSON` type. +This is because depending on the variety of the failed event, the `error` might be a simple string or a complex object with additional detail. + +For example, the “invalid JSON” message might have this `error`: + +```json +"invalid json: expected false got 'foo' (line 1, column 1)" +``` + +In contrast, in case of a failure to resolve Iglu server, the value in the `error` field would look like this, with “sub-errors” inside: + +```json +{ + "error": "ResolutionError", + "lookupHistory": [ + { + "attempts": 1, + "errors": [ + { + "error": "RepoFailure", + "message": "Unexpected exception fetching: org.http4s.client.UnexpectedStatus: unexpected HTTP status: 404 Not Found" + } + ], + "lastAttempt": "2021-10-16T17:20:52.626Z", + "repository": "Iglu Central" + }, + ... + ] +} +``` + +You can figure out what to expect from such a field by looking at the JSON schema for the respective type of failed events, in this case the [tracker protocol violations schema](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/tracker_protocol_violations/jsonschema/1-0-0). The mapping between the various failed event tables and the corresponding JSON schemas is [here](https://github.com/snowplow-incubator/snowplow-badrows-tables/tree/master/bigquery). + +BigQuery has a variety of JSON functions that allow you to extract data from within complex objects. For instance, if you are interested in Iglu repositories that failed to resolve, you can use something like this: + +```sql +SELECT DISTINCT(JSON_VALUE(message.error.lookupHistory[0].repository)) +FROM ... +WHERE ... +AND message.error.lookupHistory IS NOT NULL +``` + +It’s also possible, although unwieldy, to reduce all `error`s to a single string: + +```sql +-- Unnest individual messages for each failed event +WITH unnested_messages AS ( + SELECT message, CASE + -- resolution errors + WHEN message.error.lookupHistory IS NOT NULL THEN JSON_QUERY_ARRAY(message.error.lookupHistory[0].errors) + -- event validation errors + WHEN message.error.dataReports IS NOT NULL THEN JSON_QUERY_ARRAY(message.error.dataReports) + -- schema validation errors + WHEN message.error.schemaIssues IS NOT NULL THEN JSON_QUERY_ARRAY(message.error.schemaIssues) + -- other errors + ELSE [TO_JSON(STRUCT(message.error as message))] + END AS errors +FROM bad_rows_prod1.tracker_protocol_violations, +UNNEST(data.failure.messages) AS message +WHERE ...) + +SELECT JSON_VALUE(error.message) AS error +FROM unnested_messages, +UNNEST(errors) AS error +``` + +In the future, we plan to simplify the schemas of failed events so that they are more uniform and straightforward to query. + +
+ +
+
diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/index.md b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/index.md deleted file mode 100644 index 48c6aa04cd..0000000000 --- a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/index.md +++ /dev/null @@ -1,276 +0,0 @@ ---- -title: "Querying failed events in Athena or BigQuery" -sidebar_label: "Using Athena or BigQuery" -sidebar_position: 2 ---- - -```mdx-code-block -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -``` - -[Athena](https://aws.amazon.com/athena/) on AWS and [BigQuery](https://cloud.google.com/bigquery) on GCP are tools that let you query your failed events, using the cloud storage files as a back-end data source. - -```sql -SELECT data.failure.messages FROM adapter_failures -WHERE from_iso8601_timestamp(data.failure.timestamp) > timestamp '2020-04-01' -``` - -This approach is great for debugging your pipeline without the need to load your failed events into a separate database. - -Before you can query this data, you need to create corresponding tables in Athena or BigQuery as we explain below. Each different failed event type (e.g. schema violations, adapter failures) has a different schema, so you will need one table per event type. - -## Creating the tables - - - - -Go to [the Athena dashboard](https://eu-central-1.console.aws.amazon.com/athena/home) and use the query editor. Start by creating a database (replace `{{ DATABASE }}` with the name of your pipeline, e.g. `prod1` or `qa1`): - -```sql -CREATE DATABASE IF NOT EXISTS {{ DATABASE }} -``` - -Then run each sql statement provided in the [badrows-tables repository](https://github.com/snowplow-incubator/snowplow-badrows-tables/tree/master/athena) by copying them into the Athena query editor. We recommend creating all tables, although you can skip the ones you are not interested in. - -:::info Placeholders - -Note that the sql statements contain a few placeholders which you will need to edit before you can create the tables: - -* `{{ DATABASE }}` — as above, change this to the name of your pipeline, e.g. `prod1` or `qa1`. -* `s3://{{ BUCKET }}/{{ PIPELINE }}` — this should point to the directory in S3 where your bad rows files are stored. - -::: - -![Creating a table in Athena](images/athena-create-table.png) - - - - -:::info Community Edition quick start guide on GCP - -If you followed the [Community Edition quick start guide](/docs/get-started/snowplow-community-edition/quick-start/index.md), you will need to manually deploy the [GCS Loader](/docs/api-reference/loaders-storage-targets/google-cloud-storage-loader/index.md) to save failed events into GCS, as it’s currently not included in the Terraform scripts. - -::: - -:::note - -These instructions make use of the [bq command-line tool](https://cloud.google.com/bigquery/docs/bq-command-line-tool) which is packaged with the [google cloud sdk](https://cloud.google.com/sdk/docs). Follow the sdk instructions for how to [initialize and authenticate the sdk](https://cloud.google.com/sdk/docs/initializing). Also take a look at the [BigQuery dashboard](https://console.cloud.google.com/bigquery) as you run these commands, so you can see your tables as you create them. - -::: - -Create a dataset to contain your failed event tables: - -```bash -bq mk --data_location=EU bad_rows_prod1 -# Dataset 'my-snowplow-project:bad_rows_prod1' successfully created. -``` - -The `--data-location` should match the location of your bad rows bucket. Also replace `prod1` with the name of your pipeline. - -Next, download the table definitions provided in the [badrows-tables repository](https://github.com/snowplow-incubator/snowplow-badrows-tables/tree/master/bigquery) in JSON format. - -:::info Placeholders - -Each table definition contains a `{{ BUCKET }}` placeholder which needs to be changed to the GCS bucket where your bad rows files are stored (e.g. `sp-storage-loader-bad-prod1-com_acme`). - -::: - -Now run `bq mk` for each table definition in turn. Use the `--external_table_definition` parameter so that BigQuery uses the bucket as the back-end data source. Here is how to run the command for the first three tables (note that you should change the dataset name `bad_rows_prod1` to match the dataset you just created): - -```bash -bq mk \ - --display_name="Adapter failures" \ - --external_table_definition=./adapter_failures.json \ - bad_rows_prod1.adapter_failures - -# Table 'my-snowplow-project:bad_rows_prod1.adapter_failures' successfully created. - -bq mk \ - --display_name "Schema violations" \ - --external_table_definition=./schema_violations.json \ - bad_rows_prod1.schema_violations - -# Table 'my-snowplow-project:bad_rows_prod1.schema_violations' successfully created. - -bq mk \ - --display_name "Tracker protocol violations" \ - --external_table_definition=./tracker_protocol_violations.json \ - bad_rows_prod1.tracker_protocol_violations - -# Table 'my-snowplow-project:bad_rows_prod1.tracker_protocol_violations' successfully created. -``` - -Run the corresponding commands for the remaining table definitions. We recommend creating all tables, although you can skip the ones you are not interested in. - -:::tip Why not just auto-detect the schemas? - -BigQuery has an “Auto-detect” feature to automatically generate the table definition for you by inspecting the file contents. So you might wonder why it is necessary to provide explicit schema definitions for your tables. - -There are two potential pitfalls when using the autogenerated schema with the Snowplow bad rows files: - -- _Optional fields_. BigQuery might not “notice” that a field exists, depending on the sample of data used to detect the schema. -- _Polymorphic fields_, e.g. `error` that can be either a string or an object. BigQuery will throw an exception if it sees an unexpected value for a field. Our table definitions use the `JSON` data type for these fields. - -::: - - - - -## Querying the data - - - - -As example of using your Athena tables, you might start by getting counts of each failed event type from the last week. Repeat this query for each table you have created: - -```sql -SELECT COUNT(*) FROM schema_violations -WHERE from_iso8601_timestamp(data.failure.timestamp) > DATE_ADD('day', -7, now()) -``` - -![Athena query](images/athena-count.png) - -If you have schema violations, you might want to find which tracker sent the event: - -```sql -SELECT data.payload.enriched.app_id, COUNT(*) FROM schema_violations -WHERE from_iso8601_timestamp(data.failure.timestamp) > DATE_ADD('day', -7, now()) -GROUP BY data.payload.enriched.app_id -``` - -You can do a deeper dive into the error messages to get a explanation of the last 10 failures: - -```sql -SELECT message.field AS field, - message.value AS value, - message.error AS error, - message.json AS json, - message.schemaKey AS schemaKey, - message.schemaCriterion AS schemaCriterion -FROM schema_violations -CROSS JOIN UNNEST(data.failure.messages) AS t(message) -ORDER BY data.failure.timestamp DESC -LIMIT 10 -``` - - - - -You can query your tables from the query editor in the [BigQuery console](https://console.cloud.google.com/bigquery). You might want to start by getting counts of each failed event type from the last week. This query will work, but it is relatively expensive because it will scan all files in the `schema_violations` directory: - -```sql -SELECT COUNT(*) FROM bad_rows_prod1.schema_violations -WHERE data.failure.timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY); -``` - -You can construct a more economical query by using the `_FILE_NAME` pseudo column to restrict the scan to files from the last week: - -```sql -SELECT COUNT(*) FROM bad_rows_prod1.schema_violations -WHERE DATE(PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S', LTRIM(REGEXP_EXTRACT(_FILE_NAME, 'output-[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+'), 'output-'))) >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY); -``` - -You can repeat that query for each table you created in your bad rows dataset. - -![BigQuery query](images/bigquery-count.png) - -If you have schema violations, you might want to find which tracker sent the event: - -```sql -SELECT data.payload.enriched.app_id, COUNT(*) FROM bad_rows_prod1.schema_violations -WHERE DATE(PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S', LTRIM(REGEXP_EXTRACT(_FILE_NAME, 'output-[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+'), 'output-'))) >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) -GROUP BY data.payload.enriched.app_id; -``` - -If you have tracker protocol failures, you can do a deeper dive into the error messages to get a explanation of the last 10 failures: - -```sql -SELECT message.field AS field, - message.value AS value, - message.error AS error, - message.expectation AS expectation, - message.schemaKey AS schemaKey, - message.schemaCriterion AS schemaCriterion -FROM bad_rows_prod1.tracker_protocol_violations, -UNNEST(data.failure.messages) AS message -WHERE DATE(PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S', LTRIM(REGEXP_EXTRACT(_FILE_NAME, 'output-[0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+'), 'output-'))) >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) -ORDER BY data.failure.timestamp DESC -LIMIT 10; -``` - -
- Digging deeper - -You might notice that the `error` field in the result of the query above has the `JSON` type. -This is because depending on the variety of the failed event, the `error` might be a simple string or a complex object with additional detail. - -For example, the “invalid JSON” message might have this `error`: - -```json -"invalid json: expected false got 'foo' (line 1, column 1)" -``` - -In contrast, in case of a failure to resolve Iglu server, the value in the `error` field would look like this, with “sub-errors” inside: - -```json -{ - "error": "ResolutionError", - "lookupHistory": [ - { - "attempts": 1, - "errors": [ - { - "error": "RepoFailure", - "message": "Unexpected exception fetching: org.http4s.client.UnexpectedStatus: unexpected HTTP status: 404 Not Found" - } - ], - "lastAttempt": "2021-10-16T17:20:52.626Z", - "repository": "Iglu Central" - }, - ... - ] -} -``` - -You can figure out what to expect from such a field by looking at the JSON schema for the respective type of failed events, in this case the [tracker protocol violations schema](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.badrows/tracker_protocol_violations/jsonschema/1-0-0). The mapping between the various failed event tables and the corresponding JSON schemas is [here](https://github.com/snowplow-incubator/snowplow-badrows-tables/tree/master/bigquery). - -BigQuery has a variety of JSON functions that allow you to extract data from within complex objects. For instance, if you are interested in Iglu repositories that failed to resolve, you can use something like this: - -```sql -SELECT DISTINCT(JSON_VALUE(message.error.lookupHistory[0].repository)) -FROM ... -WHERE ... -AND message.error.lookupHistory IS NOT NULL -``` - -It’s also possible, although unwieldy, to reduce all `error`s to a single string: - -```sql --- Unnest individual messages for each failed event -WITH unnested_messages AS ( - SELECT message, CASE - -- resolution errors - WHEN message.error.lookupHistory IS NOT NULL THEN JSON_QUERY_ARRAY(message.error.lookupHistory[0].errors) - -- event validation errors - WHEN message.error.dataReports IS NOT NULL THEN JSON_QUERY_ARRAY(message.error.dataReports) - -- schema validation errors - WHEN message.error.schemaIssues IS NOT NULL THEN JSON_QUERY_ARRAY(message.error.schemaIssues) - -- other errors - ELSE [TO_JSON(STRUCT(message.error as message))] - END AS errors -FROM bad_rows_prod1.tracker_protocol_violations, -UNNEST(data.failure.messages) AS message -WHERE ...) - -SELECT JSON_VALUE(error.message) AS error -FROM unnested_messages, -UNNEST(errors) AS error -``` - -In the future, we plan to simplify the schemas of failed events so that they are more uniform and straightforward to query. - -
- -
-
diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/images/enable-stream.png b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/images/enable-stream.png new file mode 100644 index 0000000000000000000000000000000000000000..89cb111cf65b25b8d1c164947d5f5e049ab8bc50 GIT binary patch literal 154832 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 KN3sq%-}xWDU1!e# literal 0 HcmV?d00001 diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/images/loader-type.png b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/images/loader-type.png new file mode 100644 index 0000000000000000000000000000000000000000..72212e190651f204fb004786b64d0ca69e9513bb GIT binary patch literal 31165 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 K$qI3!fd2#GPdmW? literal 0 HcmV?d00001 diff --git a/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/index.md b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/index.md new file mode 100644 index 0000000000..7d2c872789 --- /dev/null +++ b/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/index.md @@ -0,0 +1,131 @@ +--- +title: "Exploring failed events in the warehouse or data lake" +description: "Load common types of failed events to a separate table in your warehouse or lake to analyze them easily." +sidebar_label: "In warehouse or lake" +sidebar_position: 1 +--- + +:::note Compatibility + +This feature is available since Enrich 5.0.0 and works with Snowflake and Lake loaders. + +::: + +## Introduction + +[Failed events](/docs/fundamentals/failed-events/index.md) are events the pipeline had some problem processing (for example, events that did not pass validation). + +For the common failures (validation and enrichment), you can configure continuous loading of any offending events into _a separate table_ in your warehouse or lake. This way, you can easily inspect them and decide how they might be patched up (e.g. with SQL) and merged with the rest of your data. + +:::note + +This feature is not retroactive, i.e. only failed events that occur _after it’s enabled_ will be loaded into your desired destination. + +::: + +## Format + +The format of the failed events loaded into your warehouse or lake is [the same as for your atomic events](/docs/fundamentals/canonical-event/index.md). All the standard fields are present (unless themselves invalid — see below). This allows you to query and aggregate this data easily, e.g. if you want to see the number of failures per `app_id`. + +There are two differences compared to regular events. + +**Invalid data is removed from the event.** This principle applies to all columns: +* Any invalid standard column (e.g. `geo_country`) will be set to `null`. +* Likewise, any column containing the JSON for a self-describing event (`unstruct_...`) will be set to `null` if that JSON fails validation. +* Finally, for entity columns (`contexts_`), if one entity is invalid, it will be removed from the array of entities. If all entities are invalid, the whole column will be set to `null`. + +For more information about the different columns in Snowplow data, see [how Snowplow data is stored in the warehouse](/docs/destinations/warehouses-lakes/schemas-in-warehouse/index.md). + +**There is an extra column with failure details.** The column is named `contexts_com_snowplowanalytics_snowplow_failure_1`. In most cases, it will also contain the invalid data in some form. See the [next section](#example-failed-event) for an example. + +## Example failed event + +Here is an example of what the `contexts_com_snowplowanalytics_snowplow_failure_1` column might contain. Note that a single failed event might have more than one error. In this case, there is a required field missing, and also an unrecognized field present. + +```js +[ + { + // timestamp of the failure + "timestamp": "2025-01-15T14:12:50.498148Z", + + // failure type and failure schema version + "failureType": "ValidationError", + "_schema_version": "1-0-0", + + // the component where the failure happened + "componentName": "snowplow-enrich-kafka", + "componentVersion": "5.1.2", + + // the schema of the offending event + "schema": "iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1", + + // any properties which were invalid + "data": { + "invalidProperty": "This schema doesn't have this property" + }, + + // there can be multiple errors per event + "errors": [ + { + "keyword": "required", + "message": "$.targetUrl: is missing but it is required", + "path": "$", + "source": "unstruct", + "targets": [ + "targetUrl" + ] + }, + { + "keyword": "additionalProperties", + "message": "$.invalidProperty: is not defined in the schema and the schema does not allow additional properties", + "path": "$", + "source": "unstruct", + "targets": [ + "invalidProperty" + ] + } + ] + } +] +``` + +## Setup + +To use this feature, you will first need to enable the stream that contains failed events in the [Snowplow TSV format](/docs/fundamentals/canonical-event/understanding-the-enriched-tsv-format/index.md) suitable for loading into your warehouse or lake. + +The instructions below are for Snowplow BDP users. For Community Edition, you will need to configure this manually via Terraform. + +:::note Infrastructure costs + +An additional stream (Kinesis, Pub/Sub or Event Hubs on AWS, GCP and Azure respectively) will be reflected in your cloud infrastructure costs (unless you are using BDP Cloud). That said, failed events are usually a tiny fraction of all events, so this stream will be minimally sized. + +::: + +Open the _“Pipeline configuration”_ section for the desired pipeline and select _“Failed events stream”_. + +![enable failed events stream](images/enable-stream.png) + +Click _“Enable”_ and wait for the changes to take effect. + +Now you are ready to add a loader. Click _“Add failed events loader”_, which will take you to the destinations catalog. + +You can use the following loaders with the failed events stream: + +* Snowflake Streaming Loader +* Lake Loader + +Pick your desired destination and follow the steps in the UI, selecting _“failed events”_ as the type of events. + +![loader type selection](images/loader-type.png) + +Note that as with any other loader, you will first need to create a connection to your warehouse or lake, and then the loader itself. + +:::warning PII in failed events + +Some of the problems that cause failed events could lead them to contain personally identifiable information (PII). For example, a validation error could stem from PII placed in the wrong field, and that field might not be pseudonymized, leaving PII exposed in the error message. Or the [PII enrichment](/docs/pipeline/enrichments/available-enrichments/pii-pseudonymization-enrichment/index.md) itself might have failed. + +For this reason, we strongly recommend loading failed events into a separate schema (in case of a warehouse) or storage location (in case of a data lake) compared to your atomic events. This allows you to restrict access to failed events. + +Keep this in mind when creating the connection. + +::: diff --git a/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/manual/getting-started/index.md b/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/manual/getting-started/index.md index 77c1b010d3..50b5a155ab 100644 --- a/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/manual/getting-started/index.md +++ b/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/manual/getting-started/index.md @@ -6,7 +6,7 @@ sidebar_position: 0 Event recovery at its core, is the ability to fix events that have failed and replay them through your pipeline. -After inspecting failed events either in the [Snowplow BDP Console](/docs/data-product-studio/data-quality/failed-events/monitoring-failed-events/ui/index.md), or in the [partitioned failure buckets](/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/index.md), you can determine which events are possible to recover based on what the fix entails. +After inspecting failed events either in the [Snowplow BDP Console](/docs/data-product-studio/data-quality/failed-events/monitoring-failed-events/ui/index.md), or in the [partitioned failure buckets](/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/index.md), you can determine which events are possible to recover based on what the fix entails. With recovery it is possible to: @@ -16,9 +16,9 @@ With recovery it is possible to: If your failed events would not be fixed by applying the above, they currently would be considered unrecoverable. Due to the fact that there might be a mix of recoverable and unrecoverable data in your storage, event recovery uses configuration in order to process only a subset of the failed events. -### What you'll need to get started +### What you'll need to get started -The typical flow for recovery and some prerequisites to consider would be: +The typical flow for recovery and some prerequisites to consider would be: **Understanding the failure issue** - Familiarity with the [failed event types](/docs/fundamentals/failed-events/index.md) diff --git a/docs/data-product-studio/data-quality/snowplow-inspector/overview/index.md b/docs/data-product-studio/data-quality/snowplow-inspector/overview/index.md index f33cf938fe..2a8280d99f 100644 --- a/docs/data-product-studio/data-quality/snowplow-inspector/overview/index.md +++ b/docs/data-product-studio/data-quality/snowplow-inspector/overview/index.md @@ -32,6 +32,6 @@ This makes the tool a good first port of call when trying to answer questions su Additionally, you can configure the extension to show whether or not an event has passed validation according to any event validation rules codified in the corresponding [schema](/docs/fundamentals/schemas/index.md). -For events that failed validation in production historically that you are unable to replicate in your own browser, see our guides on [how to query failed events](/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/index.md) from their respective destinations. +For events that failed validation in production historically that you are unable to replicate in your own browser, see our guides on [how to query failed events](/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/index.md) from their respective destinations. These failed events have a [specific format](/docs/fundamentals/failed-events/index.md) that includes an array of helpful, detailed error messages that explain the exact reasons why the event failed validation. These events can also [be imported](/docs/data-product-studio/data-quality/snowplow-inspector/importing-events/index.md#importing-failed-events) into the extension to view as if your browser had generated them itself. diff --git a/docs/fundamentals/failed-events/index.md b/docs/fundamentals/failed-events/index.md index 43c5eda159..e71e5d06c7 100644 --- a/docs/fundamentals/failed-events/index.md +++ b/docs/fundamentals/failed-events/index.md @@ -55,23 +55,21 @@ Snowplow BDP provides a dashboard and alerts for failed events. See [Monitoring --- -For the common failures (validation and enrichment), it’s possible to load the offending events into _a separate table_ in your warehouse or lake. This way, you can easily inspect them and decide how they might be patched up (e.g. with SQL) and merged with the rest of your data. These events will include a special column with the details of the failure, and any invalid columns will be set to `null`. Otherwise, the format is [the same as for your atomic events](/docs/fundamentals/canonical-event/index.md). +For the common failures (validation and enrichment), you can configure continuous loading of any offending events into _a separate table_ in your warehouse or lake. This way, you can easily inspect them and decide how they might be patched up (e.g. with SQL) and merged with the rest of your data. -:::note Compatibility +:::note -This feature is available since Enrich 5.0.0 and works with Snowflake, BigQuery and Lake loaders. +This feature is not retroactive, i.e. only failed events that occur _after it’s enabled_ will be loaded into your desired destination. ::: ---- - -Finally, all failed events are backed up in object storage (S3 on AWS or GCS on GCP). Sometimes, but not in all cases (e.g. not if the original events exceeded size limits), it’s possible to recover them by replaying them through the pipeline. This is a complicated process mainly reserved for internal failures and outages. Refer to [Recovering failed events](/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/index.md). +The events will include a special column with the details of the failure, and any invalid columns will be set to `null`. Otherwise, the format is [the same as for your atomic events](/docs/fundamentals/canonical-event/index.md). -:::note Azure +See [Exploring failed events](/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/warehouse-lake/index.md) for more details and setup instructions. -Writing failed events to object storage is supported on AWS and GCP, but not on Azure. +--- -::: +Finally, on AWS and GCP all failed events are backed up in object storage (S3 and GCS respectively). Sometimes, but not in all cases (e.g. not if the original events exceeded size limits), it’s possible to recover them by replaying them through the pipeline. This is a complicated process mainly reserved for internal failures and outages. Refer to [Recovering failed events](/docs/data-product-studio/data-quality/failed-events/recovering-failed-events/index.md). --- diff --git a/docs/get-started/snowplow-community-edition/what-is-deployed/index.md b/docs/get-started/snowplow-community-edition/what-is-deployed/index.md index 83acc72ce8..c16669982c 100644 --- a/docs/get-started/snowplow-community-edition/what-is-deployed/index.md +++ b/docs/get-started/snowplow-community-edition/what-is-deployed/index.md @@ -239,7 +239,7 @@ See the [S3 Loader](https://registry.terraform.io/modules/snowplow-devops/s3-loa The following loaders and folders are available: * Raw loader, `raw/`: events that come straight out of the Collector and have not yet been validated or enriched by the Enrich application. They are Thrift records and are therefore a little tricky to decode. There are not many reasons to use this data, but backing this data up gives you the flexibility to replay this data should something go wrong further downstream in the pipeline. * Enriched loader, `enriched/`: enriched events, in GZipped blobs of [enriched TSV](/docs/fundamentals/canonical-event/understanding-the-enriched-tsv-format/index.md). Historically, this has been used as the staging ground for loading into data warehouses via the [Batch transformer](/docs/api-reference/loaders-storage-targets/snowplow-rdb-loader/transforming-enriched-data/spark-transformer/index.md) application. However, it’s no longer used in the quick start examples. -* Bad loader, `bad/`: [failed events](/docs/fundamentals/failed-events/index.md). You can [query them using Athena](/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/index.md). +* Bad loader, `bad/`: [failed events](/docs/fundamentals/failed-events/index.md). You can [query them using Athena](/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/index.md). Also, if you choose Postgres as your destination, the Postgres loader will load all failed events into Postgres. diff --git a/src/remark/abbreviations.js b/src/remark/abbreviations.js index ae682045bb..14d4b9b812 100644 --- a/src/remark/abbreviations.js +++ b/src/remark/abbreviations.js @@ -24,7 +24,7 @@ const plugin = () => { KCL: 'Kinesis Client Library', OSS: 'Open Source Software', QA: 'Quality Assurance', - PII: 'Personal Identifiable Information', + PII: 'Personally Identifiable Information', RDS: 'Amazon Relational Database Service', S3: 'Amazon Cloud Object Storage', SS: 'Server Side', diff --git a/static/_redirects b/static/_redirects index ef4ac4497e..d1e7537b76 100644 --- a/static/_redirects +++ b/static/_redirects @@ -328,3 +328,6 @@ docs/understanding-tracking-design/managing-data-structures-with-data-structures /docs/storing-querying/* /docs/destinations/warehouses-lakes/:splat 301 /docs/recipes/* /docs/resources/recipes-tutorials/:splat 301 /docs/using-the-snowplow-console/* /docs/account-management/:splat 301 + +# Failed events reshuffle +/docs/data-product-studio/data-quality/failed-events/exploring-failed-events/querying/ /docs/data-product-studio/data-quality/failed-events/exploring-failed-events/file-storage/ 301