PR #196 includes the following updates:
2 total changes • 0 possible breaking changes
| Data Model(s) | Change type | Old | New | Notes |
|---|---|---|---|---|
| fivetran_platform__errors_and_warnings | New model | Unions error and warning events from the log (standard connections) and connector_sdk_log (Connector SDK connections) tables, enriched with connection_name. |
||
| stg_fivetran_platform__connector_sdk_log | New model | Staging model for the new connector_sdk_log source table. |
- Adds the
fivetran_platform_using_connector_sdk_logvariable (defaulttrue) to enable or disable theconnector_sdk_logsource and its downstream logic. Set this tofalseif your destination does not contain theconnector_sdk_logtable.
PR #183 includes the following updates:
- Adds
get_*_columns()macros for all staging source tables and updates the corresponding staging models to usefivetran_utils.fill_staging_columns(). Staging models now handle missing source columns gracefully by filling them withnullrather than raising an error. - Adjusts
row_count__connection_daily_eventstest to dynamically referenceconnectionorconnectorsource tables.
PR #180 includes the following updates:
- Converts the
message_datafield in thestg_fivetran_platform__logmodel to a string for the following datatypes:- Snowflake: VARIANT
- Redshift: SUPER
- Postgres: JSON and JSONB
- BigQuery: JSON (already supported)
- Expands testing of JSON datatypes in the
stg_fivetran_platform__logmodel.
PR #176 includes the following updates:
- Increases the required dbt version upper limit to v3.0.0
This release includes updates from pre-release versions 2.3.2-a1 and 2.4.0-a1.
- Optimizes the
fivetran_platform__audit_tablemodel logic to run in a timelier manner on full refreshes. (PR #174)
- Resolves duplicate records in
fivetran_platform__audit_tablearising out of multiplerecords_modifiedevents for a single table during a sync. (PR #174)
- Rolls back additions to the
quickstart.ymlmade in v2.2.1. We now rely on thedoes_table_exist()macro to handle missingcredits_usedortransformation_runstables. (PR #172)
PR #174 includes the following updates:
- Optimizes the
fivetran_platform__audit_tablemodel logic to run in a timelier manner on full refreshes.
PR #172 includes the following updates:
- Rolls back additions to the
quickstart.ymlmade in v2.2.1. We now rely on thedoes_table_exist()macro to handle missingcredits_usedortransformation_runstables.
PR #169 includes the following updates:
- Ensures that
return()is only called once in theis_databricks_all_purpose_cluster()macro. This resolves the following error that dbt Fusion users may have received:
Failed to add template invalid operation: return() is called in a non-block context
(in fivetran_log.default__is_databricks_all_purpose_cluster:7:12)
--> fivetran_log.default__is_databricks_all_purpose_cluster:7:12
PR #164 includes the following updates:
3 total changes • 3 possible breaking changes
To prevent potential errors from naming and materialization updates, a
--full-refreshis required after upgrading.
| Data Models | Change Type | Old | New | Notes |
|---|---|---|---|---|
fivetran_platform__audit_table |
Model materialization (only for Databricks SQL Warehouse runtimes) | table | incremental | Added incremental model support for Databricks SQL Warehouses using the merge strategy. Previously, incremental support was limited to Databricks All Purpose Clusters via the insert_overwrite strategy. This update extends incremental functionality to SQL Warehouses, enabling more efficient model builds. |
fivetran_platform__audit_table |
New column | write_to_table_start_day |
Changed the column partitioned on from sync_start_day to the new write_to_table_start_day. The previous column could contain null values, which are not ideal for partitioning and may lead to unexpected behavior in incremental models. |
|
fivetran_platform__audit_table |
Deleted column | sync_start_day |
No longer in use given the above. |
- Updated
fivetran_platform__mar_table_historyto include consumption records do not have an associated active connection and/or destination.- As a result this table may now contain additional records that were previously excluded.
- For more details, see the corresponding DECISIONLOG entry.
- Updated package to maintain compatibility with dbt-core versions both before and after v1.10.6, which introduced a breaking change to multi-argument test syntax (e.g.,
unique_combination_of_columns). - Temporarily removed unsupported tests to avoid errors and ensure smoother upgrades across different dbt-core versions. These tests will be reintroduced once a safe migration path is available.
- Removed all
dbt_utils.unique_combination_of_columnstests. - Removed all accepted_values tests.
- Moved
loaded_at_field: _fivetran_syncedunder theconfig:block insrc_fivetran_log.yml.
- Removed all
- Updated the
is_incremental_compatible()macro to include Databricks SQL Warehouses. - Introduced a new macro,
is_databricks_all_purpose_cluster(), to distinguish between Databricks All Purpose Clusters and SQL Warehouses. - Updated conditions in
.github/workflows/auto-release.yml. - Added
.github/workflows/generate-docs.yml.
PR #162 includes the following updates:
- Updated
fivetran_platform__mar_table_historyto include consumption records not associated with an active connection.- As a result this table may now contain additional records that were previously excluded.
PR #161 includes the following updates:
- Updated conditions in
.github/workflows/auto-release.yml. - Added
.github/workflows/generate-docs.yml. - Added
+docs: show: Falsetointegration_tests/dbt_project.yml. - Migrated
flags(e.g.,send_anonymous_usage_stats,use_colors) fromsample.profiles.ymltointegration_tests/dbt_project.yml. - Updated
maintainer_pull_request_template.mdwith improved checklist. - Updated Python image version to
3.10.13inpipeline.yml. - Updated
.gitignoreto exclude additional DBT, Python, and system artifacts.
PR #160 includes the following updates:
- Added BigQuery JSON field support for the following model and columns:
stg_fivetran_platform__log:message_datacolumn.- Added the
field_conversioncte to apply the conversion tomessage_dataprior to additional transformations.
- Added the
- Added the
json_to_string()macro for BigQuery to convert JSON fields to strings for reliable downstream parsing. - Included json versions to the integration tests to ensure json data type compatibility.
PR #153 includes the following updates:
- Incorporated
fivetran_platform__credits_pricingandfivetran_platform_using_transformationsinto thequickstart.ymlfile.
PR #154 includes the following updates:
Note: This is not relevant to Fivetran Quickstart users. Migrated
freshnessfrom a top-level source property to a sourceconfigin alignment with recent updates from dbt Core. This will resolve the following deprecation warning that users running dbt >= 1.9.6 may have received:
[WARNING]: Deprecated functionality
Found `freshness` as a top-level property of `fivetran_platform` in file
`models/src_fivetran_platform.yml`. The `freshness` top-level property should be moved
into the `config` of `fivetran_platform`.
IMPORTANT: Users running dbt Core < 1.9.6 will not be able to utilize freshness tests in this release or any subsequent releases, as older versions of dbt will not recognize freshness as a source config and therefore not run the tests.
If you are using dbt Core < 1.9.6 and want to continue running Fivetran Platform freshness tests, please elect one of the following options:
- (Recommended) Upgrade to dbt Core >= 1.9.6
- Do not upgrade your installed version of the
fivetran_logpackage. Pin your dependency on v2.1.0 in yourpackages.ymlfile. - Utilize a dbt override to overwrite the package's
fivetran_platformsource and apply freshness via the old top-level property route. This will require you to copy and paste the entirety of thesrc_fivetran_platform.ymlfile and add anoverrides: fivetran_logproperty.
- Updated logic for identifying broken connections. Connection
sync_endevents havinglog_status = 'FAILURE', in addition toSEVEREevent types, are now considered broken connections. (PR #155)
- Updated the package maintainer PR template.
PR #153 includes the following updates:
- Incorporated
fivetran_platform__credits_pricingandfivetran_platform_using_transformationsinto thequickstart.ymlfile.
PR #150 includes the following updates:
- Removed the dependency on calogica/dbt_date as it is no longer actively maintained. To maintain functionality, key date macros have been replicated within the
fivetran_date_macrosfolder with minimal modifications. Only macro versions supporting the Fivetran Log supported destinations are retained, and all have been prefixed withfivetran_to avoid naming conflicts.date_part->fivetran_date_partday_name->fivetran_day_nameday_of_month->fivetran_day_of_month
- Created consistency test on
fivetran_platform__audit_user_activityto ensureday_nameandday_of_monthcounts match.
PR #144 includes the following updates:
A
--full-refreshis required after upgrading to prevent errors caused by naming and materialization changes. Additionally, downstream queries must be updated to reflect new model and column names.
-
The materialization of all
stg_*staging models has been updated fromtabletoview.- Previously
stg_*_tmpmodels were views while the non-*_tmpversions were tables. Now all are views to eliminate redundant data storage.
- Previously
-
Source Table Transition:
- The
CONNECTORsource table is deprecated and replaced byCONNECTION. During a brief transition period, both tables will be identical, butCONNECTORwill stop receiving data and be removed at a later time.- This change clarifies the distinction: Connectors facilitate the creation of connections between sources and destinations.
- The
CONNECTIONtable is now the default source.- For Quickstart users: The
CONNECTORwill automatically be used ifCONNECTIONis not yet available. - For dbt Core users: Users without the
CONNECTIONsource can continue usingCONNECTORby adding the following variable to your rootdbt_project.ymlfile:vars: fivetran_platform_using_connection: false # default: true
- For more details, refer to the README.
- For Quickstart users: The
- The
-
New Columns:
- As part of the
CONNECTIONupdates, the following columns have been added alongside theirconnector_*equivalents:- INCREMENTAL_MAR:
connection_name - LOG:
connection_id
- INCREMENTAL_MAR:
- As part of the
-
Renamed Models:
fivetran_platform__connector_status→fivetran_platform__connection_statusfivetran_platform__connector_daily_events→fivetran_platform__connection_daily_eventsfivetran_platform__usage_mar_destination_history→fivetran_platform__usage_historystg_fivetran_platform__connector→stg_fivetran_platform__connectionstg_fivetran_platform__connector_tmp→stg_fivetran_platform__connection_tmp
NOTE: Ensure any downstream queries are updated to reflect the new model names.
- Renamed Columns:
- Renamed
connector_idtoconnection_idandconnector_nametoconnection_namein the following models:fivetran_platform__connection_status- Also renamed
connector_healthtoconnection_health
- Also renamed
fivetran_platform__mar_table_historyfivetran_platform__connection_daily_eventsfivetran_platform__audit_tablefivetran_platform__audit_user_activityfivetran_platform__schema_changelogstg_fivetran_platform__connectionstg_fivetran_platform__logconnector_idtoconnection_idonly
stg_fivetran_platform__incremental_marconnector_nametoconnection_nameonly
- Renamed
NOTE: Ensure any downstream queries are updated to reflect the new column names.
- Added macro
coalesce_castto ensure consistent data types when usingcoalesce, preventing potential errors. - Added macro
get_connection_columnsfor the newCONNECTIONsource.
- Updated documentation to reflect all renames and the source table transition.
- Updated consistency and integrity tests to align with naming changes.
- Refactored seeds and
get_*_columnsmacros to reflect renames. - Added a new seed for the
CONNECTIONtable. - Updated
run_modelsto test new varfivetran_platform_using_connection.
PR #141 includes the following updates:
-
This package now accounts for the
transformation_runssource table. Therefore, a new staging modelstg_fivetran_platform__transformation_runshas been added. Note that not all customers have thetransformation_runssource table, particularly if they are not using Fivetran Transformations. If the table doesn't exist,stg_fivetran_platform__transformation_runswill persist as an empty model and respective downstream fields will be null. -
In addition, the following fields have been added to the
fivetran_platform__usage_mar_destination_historyend model:paid_model_runsfree_model_runstotal_model_runs
- Included documentation about the
transformation_runssource table and the aggregated*_model_runsfields. - Added information about manually configuring the
fivetran_platform_using_transformationsvariable in the DECISION LOG. - Added Quickstart model counts to README. (#145)
- Corrected references to connectors and connections in the README. (#145)
- Updated dbt documentation column and table descriptions for clarity and consistency across models and sources. (#147)
- Introduced the variable
fivetran_platform_using_transformationsto control thestg_fivetran_platform__transformation_runsoutput. It is configured based on whether thetransformation_runstable exists. For more information, refer to the DECISION LOG. - Added the
get_transformation_runs_columns()macro to ensure all required columns are present. - Added
transformation_runsseed data inintegration_tests/seeds/. - Added a
run_count__usage_mar_destination_historyvalidation test to check model run counts across staging and end model. - (Redshift only) Updates to use limit 1 instead of limit 0 for empty tables. This ensures that Redshift will respect the package's datatype casts.
PR #140 includes the following updates:
A
--full-refreshis recommended after upgrading to ensure historical records in incremental models are refreshed.
- Updated the
fivetran_log_json_parsemacro for Redshift to returnNULLinstead of an empty string when a JSON path is not found. This resolves errors caused by casting empty strings to integers in Redshift. - Standardized the
message_datafield from theLOGsource, in which JSON key names can appear in both camelCase (e.g.,{"totalQueries":5}) and snake_case (e.g.,{"total_queries":5}) formats, depending on the Fivetran connector version. Thefivetran_platform__audit_tableandfivetran_platform__connector_daily_eventsmodels now convert all key names to snake_case for consistency. - These changes are considered breaking because the standardization of key names (e.g.,
totalQueriestototal_queries) may impact downstream reporting by including previously ignored values.
- Enhanced seed data for integration testing to include the different spellings and ensure compatibility with Redshift.
PR #138 includes the following updates:
- For Fivetran Platform Connectors created after November 2024, Fivetran has deprecated the
api_callevent in favor ofextract_summary(release notes). - Accordingly, we have updated the
fivetran_platform__connector_daily_eventsmodel to support the newextract_summaryevent while maintaining backward compatibility with theapi_callevent for connectors created before November 2024.
- Replaced the deprecated
dbt.current_timestamp_backcompat()function withdbt.current_timestamp()to ensure all timestamps are captured in UTC. - Updated
fivetran_platform__connector_daily_eventsto support runningdbt compileprior to the initialdbt runon a new schema.
PR #132 includes the following updates:
- Following the July 2024 Fivetran Platform connector update, the
connector_namefield has been added to theincremental_marsource table. As a result, the following changes have been applied:- A new tmp model
stg_fivetran_platform__incremental_mar_tmphas been created. This is necessary to ensure column consistency in downstreamincremental_marmodels. - The
get_incremental_mar_columns()macro has been added to ensure all required columns are present in thestg_fivetran_platform__incremental_marmodel. - The
stg_fivetran_platform__incremental_marhas been updated to reference both the aforementioned tmp model and macro to fill empty fields if any required field is not present in the source. - The
connector_namefield in thestg_fivetran_platform__incremental_marmodel is now defined by:coalesce(connector_name, connector_id). This ensures the data model will use the appropriate field to define theconnector_name.
- A new tmp model
- Updated integration test seed data within
integration_tests/seeds/incremental_mar.csvto ensure new code updates are working as expected.
PR #130 includes the following updates:
⚠️ Since the following changes result in the table format changing, we recommend running a--full-refreshafter upgrading to this version to avoid possible incremental failures.
- For Databricks All-Purpose clusters, the
fivetran_platform__audit_tablemodel will now be materialized using the delta table format (previously parquet).- Delta tables are generally more performant than parquet and are also more widely available for Databricks users. Previously, the parquet file format was causing compilation issues on customers' managed tables.
- Updated the
sync_startandsync_endfield descriptions for thefivetran_platform__audit_tableto explicitly define that these fields only represent the sync start/end times for when the connector wrote new or modified existing records to the specified table. - Addition of integrity and consistency validation tests within integration tests for every end model.
- Removed duplicate Databricks dispatch instructions listed in the README.
- The
is_databricks_sql_warehousemacro has been renamed tois_incremental_compatibleand has been modified to returntrueif the Databricks runtime being used is an all-purpose cluster (previously this macro checked if a sql warehouse runtime was used) or if any other non-Databricks supported destination is being used.- This update was applied as there have been other Databricks runtimes discovered (ie. an endpoint and external runtime) which do not support the
insert_overwriteincremental strategy used in thefivetran_platform__audit_tablemodel.
- This update was applied as there have been other Databricks runtimes discovered (ie. an endpoint and external runtime) which do not support the
- In addition to the above, for Databricks users the
fivetran_platform__audit_tablemodel will now leverage the incremental strategy only if the Databricks runtime is all-purpose. Otherwise, all other Databricks runtimes will not leverage an incremental strategy.
PR #126 includes the following updates:
- Updated the sequence of JSON parsing for model
fivetran_platform__audit_tableto reduce runtime.
- Updated model
fivetran_platform__audit_user_activityto correct the JSON parsing used to determine columnemail. This fixes an issue introduced in v1.5.0 wherefivetran_platform__audit_user_activitycould potentially have 0 rows.
- Updated logic for macro
fivetran_log_lookbackto align with logic used in similar macros in other packages. - Updated logic for the postgres dispatch of macro
fivetran_log_json_parseto utilizejsonbinstead ofjsonfor performance.
PR #123 includes the following updates:
- Removal of the leading
/from thetarget.http_pathregex search within theis_databricks_sql_warehouse()macro to accurately identify SQL Warehouse Databricks destinations in Quickstart.- The macro above initially worked as expected in dbt core environments; however, in Quickstart implementations this data model was not working. This was due to Quickstart removing the leading
/from thetarget.http_path. Thus resulting in the regex search to always fail.
- The macro above initially worked as expected in dbt core environments; however, in Quickstart implementations this data model was not working. This was due to Quickstart removing the leading
PR #121 includes the following updates:
- Users leveraging the Databricks SQL Warehouse runtime were previously unable to run the
fivetran_platform__audit_tablemodel due to an incompatible incremental strategy. As such, the following updates have been made:- A new macro
is_databricks_sql_warehouse()has been added to determine if a SQL Warehouse runtime for Databricks is being used. This macro will return a boolean oftrueif the runtime is determined to be SQL Warehouse andfalseif it is any other runtime or a non-Databricks destination. - The above macro is used in determining the incremental strategy within the
fivetran_platform__audit_table. For Databricks SQL Warehouses, there will be no incremental strategy used. All other destinations and runtime strategies are not impacted with this change.- For the SQL Warehouse runtime, the best incremental strategy we could elect to use is the
mergestrategy. However, we do not have full confidence in the resulting data integrity of the output model when leveraging this strategy. Therefore, we opted for the model to be materialized as a non-incrementaltablefor the time being.
- For the SQL Warehouse runtime, the best incremental strategy we could elect to use is the
- The file format of the model has changed to
deltafor SQL Warehouse users. For all other destinations theparquetfile format is still used.
- A new macro
- Updated README incremental model section to revise descriptions and add information for Databricks SQL Warehouse.
- Added integration testing pipeline for Databricks SQL Warehouse.
- Applied modifications to the integration testing pipeline to account for jobs being run on both Databricks All Purpose Cluster and SQL Warehouse runtimes.
PR #119 includes the following updates:
- The following fields have been deprecated (removed) as these fields proved to be problematic across warehouses due to the end size of the fields.
errors_since_last_completed_syncwarnings_since_last_completed_sync
Note: If you found these fields to be relevant, you may still reference the error/warning messages from within the underlying
logtable.
- The
fivetran_platform_using_sync_alert_messagesvariable has been removed as it is no longer necessary due to the above changes.
- The following fields have been added to display the number of error/warning messages sync last completed sync. These fields are intended to substitute the information from deprecated fields listed above.
number_errors_since_last_completed_syncnumber_warnings_since_last_completed_sync
PR #117 includes the following updates as a result of users encountering numeric counts exceeding the limit of a standard integer. Therefore, these fields were required to be cast as bigint in order to avoid "integer out of range" errors:
⚠️ Since the following changes result in a field changing datatype, we recommend running a--full-refreshafter upgrading to this version to avoid possible incremental failures.
- The following fields in the
fivetran_platform__audit_tablemodel have been updated to be cast asdbt.type_bigint()(previously wasdbt.type_int())sum_rows_replaced_or_insertedsum_rows_updatedsum_rows_deleted
- The following fields in the
fivetran_platform__connector_daily_eventsmodel have been updated to be cast asdbt.type_bigint()(previously wasdbt.type_int())count_api_callscount_record_modificationscount_schema_changes
- Modified
logseed data within the integration tests folder to ensure that large integers are being tested as part of our integration tests.
PR #114 includes the following updates:
⚠️ Since the following changes are breaking, we recommend running a--full-refreshafter upgrading to this version.
- For Bigquery and Databricks destinations, updated the
partition_byconfig to coordinate with the filter used in the incremental logic. - For Snowflake destinations, added a
cluster_byconfig for performance.
- Updated incremental logic for
fivetran_platform__audit_tableso that it looks back 7 days to catch any late arriving records. - Updated JSON parsing logic in the following models to prevent run failures when incoming JSON-like strings are invalid.
fivetran_platform__audit_tablefivetran_platform__audit_user_activityfivetran_platform__connector_daily_eventsfivetran_platform__connector_statusfivetran_platform__schema_changelog
- Updated
fivetran_platform__connector_statusto parse only a subset of themessage_datafield to improve compute.
- Added macros:
fivetran_log_json_parseto handle the updated JSON parsing.fivetran_log_lookbackfor use infivetran_platform__audit_table.
- Updated seeds to test handling of invalid JSON strings.
PR #112 includes the following updates:
- Updated logic for
connector_healthdimension infivetran_platform__connector_statusto showdeletedfor connectors that had been removed. Previously the connector would report the last known status before deletion, which is inaccurate based on the definition of this measure. - Brought in the
is_deleteddimension (based on the_fivetran_deletedvalue) tostg_fivetran__platform__connectorto capture connectors that are deleted in the downstreamfivetran_platform__connector_statusmodel.
- Renamed
get_brand_columnsmacro file toget_connector_columnsto maintain consistency with the actual macro function within the file, and theconnectorsource that the macro is drawing columns from.
PR #109 includes the following updates:
- Adjusted the
stg_fivetran_platform__credits_usedandstg_fivetran_platform__usage_costmodels to return empty tables (via alimit 0function, orfetch/offsetfunction for SQL Server) if the respectivefivetran_platform__credits_pricingand/orfivetran_platform__usage_pricingvariables are disabled. This is to avoid Postgres data type errors if those tables are null.
- Included an additional test case within the integration tests where the
fivetran_platform__credits_pricingvariable is set to false and thefivetran_platform__usage_pricingvariable is set to true in order to effectively test this scenario. - Updated seed files to ensure downstream models properly populate into
fivetran_platform__usage_mar_destination_history.
PR #107 includes the following updates:
- Adjusted the
fivetran_platform__audit_user_activitymodel to parse themessage_datajson field to obtain the actor_email information only if the field containsactor.- This ensures the JSON parsing is only happening on the fields that are relevant. This will help reduce compute and avoid potential parsing errors from malformed JSON objects.
- Included auto-releaser GitHub Actions workflow to automate future releases.
- Updated the maintainer PR template to resemble the most up to date format.
- This release introduces compatibility with SQL Server 🥳 🎆 🍾 (PR #101)
- Adjusts the uniqueness test on the recently introduced
fivetran_platform__audit_user_activitymodel to test onlog_idandoccurred_at(PR #102).- Previously, the
log_idwas erroneously considered the primary key of this model.
- Previously, the
- Removed
order byfrom the finalselectstatement in each model. This was done to reduce compute costs from the models (PR #101). - Converted all
group by's to explicitly reference the names of columns we are grouping by, instead of grouping by column number. This was necessary for SQL Server compatibility, as implicit groupings are not supported (PR #101).
- Deprecated the
transformationandtrigger_tablesource tables and any downstream transforms. These tables only housed information on Fivetran Basic SQL Transformations, which were sunset last year (PR #96).- The entire
fivetran_platform__transformation_statusend model has therefore been removed. - As they are now obsolete, the
fivetran_platform_using_transformationsandfivetran_platform_using_triggersvariables have been removed.
- The entire
- We have added a new model,
fivetran_platform__audit_user_activity(PR #98):- Each record represents a user-triggered action in your Fivetran instance. This model is intended for audit-trail purposes, as it can be very helpful when trying to trace a user action to a log event such as a schema change, sync frequency update, manual update, broken connection, etc.
- This model builds off of this sample query from Fivetran's docs.
- Tightened incremental logic in
fivetran_platform__audit_table, which was seeing duplicates on incremental runs (PR #97).- If you are seeing uniqueness test failures on the
unique_table_sync_keyfield, please run a full refresh before upgrading to this version of the package.
- If you are seeing uniqueness test failures on the
- Added a dependency on the
dbt_datepackage (PR #98):
- package: calogica/dbt_date
version: [">=0.9.0", "<1.0.0"]PR #92 includes the following updates:
- The
unique_table_sync_keysurrogate key which is created within thefivetran_platform__audit_tablehas been updated to also be comprised of theschema_namein addition to theconnector_id,destination_id,table_name,write_to_table_startfields. This update will also ensure the uniqueness test on this record is accurately testing the true grain of the model.- 🚨 Please be aware that as the
fivetran_platform__audit_tablemodel is an incremental model a--full-refreshwill be needed following the package upgrade in order for this change to properly be applied to all records in the end model. 🚨
- 🚨 Please be aware that as the
PR #87 includes the following updates:
The below change was made to an incremental model. As such, a dbt run --full-refresh will be required following an upgrade to capture the new column.
- Added
schema_nameto thefivetran_platform__audit_tableend model. This schema name field is captured from themessage_dataJSON within thelogsource table. In cases where theschema_nameis not provided, a coalesce was added to replicate theconnector_nameas theschema_name.
Note: This may change the row count of your
fivetran_platform__audit_tablemodel. However, this new row count is more correct, as it more accurately captures records from database connectors, which can write to multiple schemas.
- Fixed links in the README models section to properly redirect to the dbt hosted docs for the relevant models.
- Update staging models CTE names to current standard used in our other packages (the base, fields, final approach) to avoid potential circular references (PR #85)
The Fivetran Log connector has been renamed to the "Fivetran Platform" connector. To align with this name change, this package is largely being renamed from fivetran_log to fivetran_platform. This is a very breaking change! 🚨 🚨 🚨 🚨
Bottom Line: What you need to update and/or know:
- If you are setting any variables for this package in your
dbt_project.yml, update the name of the prefix of the variable(s) fromfivetran_log_*tofivetran_platform_*. The default values for variables have not changed. - Similarly, any references to package models will need to be updated. The prefix of package models has been updated from
fivetran_log__*tofivetran_platform__*. - If you are overriding the
fivetran_logsource, you will need to update theoverridesproperty to match the newsourcename (fivetran_platform). - Run a full refresh, as we have updated the incremental strategies across warehouses.
- The default build schema suffixes have been changed from
_stg_fivetran_logand_fivetran_logto_stg_fivetran_platformand_fivetran_platformrespectively. We recommend dropping the old schemas.
Note: Things that are NOT changing in the package:
- The name of the Github repository will not be changed. It will remain
dbt_fivetran_log - The package's project name will remain
fivetran_log. You will not need to update yourpackages.ymlreference. - The default source schema will remain
fivetran_log. The name of the source schema variable has changed though (fivetran_log_schema->fivetran_platform_schema).
See details below!
PR #81 introduced the following changes (some unrelated to the connector name change):
- Updated the prefixes of each model from
fivetran_log_*orstg_fivetran_log_*tofivetran_platform_*andstg_fivetran_platform_*, respectively.
| Original model name | New model name |
|---|---|
| fivetran_log__audit_table | fivetran_platform__audit_table |
| fivetran_log__connector_daily_events | fivetran_platform__connector_daily_events |
| fivetran_log__connector_status | fivetran_platform__connector_status |
| fivetran_log__mar_table_history | fivetran_platform__mar_table_history |
| fivetran_log__schema_changelog | fivetran_platform__schema_changelog |
| fivetran_log__transformation_status | fivetran_platform__transformation_status |
| fivetran_log__usage_mar_destination_history | fivetran_platform__usage_mar_destination_history |
| stg_fivetran_log__account | stg_fivetran_platform__account |
| stg_fivetran_log__connector | stg_fivetran_platform__connector |
| stg_fivetran_log__credits_used | stg_fivetran_platform__credits_used |
| stg_fivetran_log__destination_membership | stg_fivetran_platform__destination_membership |
| stg_fivetran_log__destination | stg_fivetran_platform__destination |
| stg_fivetran_log__incremental_mar | stg_fivetran_platform__incremental_mar |
| stg_fivetran_log__log | stg_fivetran_platform__log |
| stg_fivetran_log__transformation | stg_fivetran_platform__transformation |
| stg_fivetran_log__trigger_table | stg_fivetran_platform__trigger_table |
| stg_fivetran_log__usage_cost | stg_fivetran_platform__usage_cost |
| stg_fivetran_log__user | stg_fivetran_platform__user |
- Updated the prefix of all package variables from
fivetran_log_*tofivetran_platform_*.
| Original variable name | New variable name | Default value (consistent) |
|---|---|---|
| fivetran_log_schema | fivetran_platform_schema | fivetran_log |
| fivetran_log_database | fivetran_platform_database | target.database |
| fivetran_log__usage_pricing | fivetran_platform__usage_pricing | Dynamically checks the source at runtime to set as either true or false. May be overridden using this variable if desired. |
| fivetran_log__credits_pricing | fivetran_platform__credits_pricing | Dynamically checks the source at runtime to set as either true or false. May be overridden using this variable if desired |
| fivetran_log_using_sync_alert_messages | fivetran_platform_using_sync_alert_messages | True |
| fivetran_log_using_transformations | fivetran_platform_using_transformations | True |
| fivetran_log_using_triggers | fivetran_platform_using_triggers | True |
| fivetran_log_using_destination_membership | fivetran_platform_using_destination_membership | True |
| fivetran_log_using_user | fivetran_platform_using_user | True |
| fivetran_log_[default_table_name]_identifier | fivetran_platform_[default_table_name]_identifier | Default table name (ie 'connector' for fivetran_platform_connector_identifier) |
- Updated the default build schema suffixes of package models from
_stg_fivetran_logand_fivetran_logto_stg_fivetran_platformand_fivetran_platformrespectively.
We recommend dropping the old schemas to eradicate the stale pre-name-change models from your destintation.
- Updated the name of the package's source from
fivetran_logtofivetran_platform. - Updated the name of the packages' schema files:
src_fivetran_log.yml->src_fivetran_platform.ymlstg_fivetran_log.yml->stg_fivetran_platform.ymlfivetran_log.yml->fivetran_platform.yml
- Updated the freshness tests on the
fivetran_platformsource to be less stringent and more realistic. The following source tables have had their default fresness tests removed, as they will not necessarily update frequently:connectoraccountdestinationdestination_membershipuser
- Updated the incremental strategy of the audit table model for BigQuery and Databricks users from
mergeto the more consistentinsert_overwritemethod. We have also updated thefile_formattoparquetand added a partition on a newsync_start_dayfield for Databricks. This field is merely a truncated version ofsync_start.- Run a full refresh to capture these new changes. We recommend running a full refresh every so often regardless. See README for more details.
- The
account_membershipsource table (and any of its transformations) has been deprecated. Fivetran deprecated this table from the connector in June 2023.
⚠️ If you are overriding thefivetran_logsource, you will need to update theoverridesproperty to match the newsourcename (fivetran_platform).
- Added documentation for fields missing yml entries.
- Incorporated the new
fivetran_utils.drop_schemas_automationmacro into the end of each Buildkite integration test job (PR #80). - Updated the pull request templates (PR #80).
PR #79 includes the following updates:
- The
sync_idfield from the sourcelogtable is added to thestg_fivetran_log__logmodel for ease of grouping events by the sync that they are associated with.
- Added the
get_log_columnsmacro and included the fill staging cte's within thestg_fivetran_log__logmodel to ensure the model succeeds regardless of a user not having all the required fields.
- The
sync_idfield is added to the documentation in thefivetran_log.ymlfile.
PR #77 includes the following updates:
- The logic within the
does_table_existmacro would run the source_relation check across all nodes. This opened dbt compile to erroneous failures in other (non fivetran_log) sources. This macro logic has been updated to only check the source_relation for the specific source in question. - Adjusted the enabled variable used within the
stg_fivetran_log__credits_usedmodel to the more appropriatefivetran_log__credits_pricingname as opposed tofivetran_log__usage_pricing. This ensures a user may override the respective model enablement in isolation of each other.
- Added a DECISIONLOG to support the logic behind the
fivetran_log__usage_pricingandfivetran_log__credits_pricingvariable behaviors within the package.
- Fixed duplicated rows in
fivetran_log__mar_table_historyand set the model back to a monthly granularity for each source, destination, and table. (#74)
- Adjusted the uniqueness test within the
fivetran_log__mar_table_historyto also include theschema_nameas the same table may exist in multiple schemas within a connector/destination. (#74)
- Modified the logic within the
fivetran_log__mar_table_historymodel to no longer filter out previous historical MAR records. Previously, these fields were filtered out as theactive_volumesource (since deprecated and replaced withincremental_mar) produced a cumulative daily MAR total. However, theincremental_marsource is not cumulative and will need to include all historical records. (#72)
- Added coalesce statements to the
paid_monthly_active_rowsandfree_monthly_active_rowsfields within the fivetran_log__mar_table_history model to coalesce to 0. (#72)
PR #64 includes the following breaking changes:
- Dispatch update for dbt-utils to dbt-core cross-db macros migration. Specifically
{{ dbt_utils.<macro> }}have been updated to{{ dbt.<macro> }}for the below macros:any_valuebool_orcast_bool_to_textconcatdate_truncdateadddatediffescape_single_quotesexcepthashintersectlast_daylengthlistaggpositionreplacerightsafe_castsplit_partstring_literaltype_biginttype_floattype_inttype_numerictype_stringtype_timestamparray_appendarray_concatarray_construct
- For
current_timestampandcurrent_timestamp_in_utcmacros, the dispatch AND the macro names have been updated to the below, respectively:dbt.current_timestamp_backcompatdbt.current_timestamp_in_utc_backcompat
dbt_utils.surrogate_keyhas also been updated todbt_utils.generate_surrogate_key. Since the method for creating surrogate keys differ, we suggest all users do afull-refreshfor the most accurate data. For more information, please refer to dbt-utils release notes for this update.packages.ymlhas been updated to reflect new defaultfivetran/fivetran_utilsversion, previously[">=0.3.0", "<0.4.0"]now[">=0.4.0", "<0.5.0"].
PR #68 includes the following breaking changes:
- The
active_volumesource (and accompanyingstg_fivetran_log__active_volumemodel) has been deprecated from the Fivetran Log connector. In its place, theincremental_martable (and accompanyingstg_fivetran_log__incremental_marmodel) has been added. This new source has been swapped within the package to reference the new source table.- This new source table has enriched data behind the paid and free MAR across Fivetran connectors within your destinations.
- Removed the
monthly_active_rowsfield from thefivetran_log__mar_table_historyandfivetran_log__usage_mar_destination_historymodels. In it's place the following fields have been added:free_mothly_active_rows: Detailing the total free MARpaid_mothly_active_rows: Detailing the total paid MARtotal_mothly_active_rows: Detailing the total free and paid MAR
- Added second qualifying join clause to
fivetran_log__usage_mar_destination_historyin theusagecte. This join was failing this test to ensure eachdestination_idhas a singlemeasured_month:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- destination_id
- measured_month
- BuildKite testing has been added. (#70)
- Modified the argument used for the identifier in the get_relation macro used in the does_table_exist macro from name to identifier. This avoids issues on snowflake where the name of a table defined in a source yaml may be in lowercase while in snowflake it is uppercased.
- Extend model disablement with
config: is_enabledsetting in sources to avoid running source freshness when a model is disabled. (#58)
-
Added the option to disable the
user,account_membership, anddestination_membershipmodels that may not be available depending on your Fivetran setup. In yourdbt_project.ymlyou can now change these flags to disable parts of the package. Use the below to configure your project. (#52) and (#55)fivetran_log_using_account_membership: false # Disables account membership models fivetran_log_using_destination_membership: false # Disables account membership models fivetran_log_using_user: false # Disables account membership models
- This release includes updates to the
fivetran_log__credit_mar_destination_historyandstg_fivetran_log__credits_usedmodels to account for the new Fivetran pricing model. These changes include: (#50)stg_fivetran_log__credits_used- The field
credits_consumedhas been renamed tocredits_spent
- The field
fivetran_log__credit_mar_destination_history- The model has been renamed to
fivetran_log__usage_mar_destination_history - The field
credits_per_million_marhas been renamed tocredits_spent_per_million_mar - The field
mar_per_credithas been renamed tomar_per_credit_spent
- The model has been renamed to
- README documentation updates for easier experience leveraging the dbt package.
- Added
fivetran_log_[source_table_name]_identifiervariables to allow for easier flexibility of the package to refer to source tables with different names. - This package now accounts for the new Fivetran pricing model. In particular, the new model accounts for the amount of dollars spend vs credits spent. Therefore, a new staging model
stg_fivetran_log__usage_costhas been added. (#50)- This model relies on the
usage_costsource table. If you do not have this source table it means you are not on the new pricing model yet. Please note, the dbt package will still generate this staging model. However, the model will be comprised of allnullrecords.
- This model relies on the
- In addition to the new staging model, two new fields have been added to the
fivetran_log__usage_mar_destination_historymodel. These fields mirror the credits spent fields, but account for the amount of dollars spent instead of credits. (#50)amount_spent_per_million_marmar_per_amount_spent
- Introduces a new macro
does_table_existto be leveraged in the new pricing model updates. This macro will check the sources defined and provide eithertrueorfalseif the table does or does not exist in the schema. (#50)
- The unique combination of columns test within the
fivetran_log__schema_changelogmodel has been updated to also check themessage_datafield. This is needed as schema changelog events may now sync at the same time. (#51) - The
fivetran_log__connector_statusmodel has been adjusted to filter out all logs that contain atransformation_id. Transformation logs are not always synced as a JSON object and thus the package may encounter errors on Snowflake warehouses when parsing non-JSON fields. Since transformation records are not used in this end model, they have been filtered out. (#51)
- Per the Fivetran Log December 2021 Release Notes every sync results in a final
sync_endevent. In the previous version of this package, a successful sync was identified via async_endevent while anything else was a version of broken. Since all syncs result in async_endevent now, the package has been updated to account for this change within the connector. - To account for the above fix, a new field (
last_successful_sync_completed_at) was added to thefivetran_log__connector_statusmodel. This field captures the last successful sync for the connector.
- The
fivetran_log__connector_statusmodel uses a date function off ofcreated_atfrom thestg_fivetran_log__logmodel. This fails on certain redshift destinations as the timestamp is synced astimestamptz. Therefore, the field within the staging model is cast usingdbt_utils.type_timestampto appropriately cast the field for downstream functions. Further, to future proof, timestamps were cast within the following staging models:account,account_membership,active_volume,destination_membership,destination,log,transformation, anduser. (#40)
This release just introduces Databricks compatibility! 🧱🧱
🎉 Official dbt v1.0.0 Compatibility Release 🎉
- Adjusts the
require-dbt-versionto now be within the range [">=1.0.0", "<2.0.0"]. Additionally, the package has been updated for dbt v1.0.0 compatibility. If you are using a dbt version <1.0.0, you will need to upgrade in order to leverage the latest version of the package.- For help upgrading your package, I recommend reviewing this GitHub repo's Release Notes on what changes have been implemented since your last upgrade.
- For help upgrading your dbt project to dbt v1.0.0, I recommend reviewing dbt-labs upgrading to 1.0.0 docs for more details on what changes must be made.
- Upgrades the package dependency to refer to the latest
dbt_fivetran_utils. The latestdbt_fivetran_utilspackage also has a dependency ondbt_utils[">=0.8.0", "<0.9.0"].- Please note, if you are installing a version of
dbt_utilsin yourpackages.ymlthat is not in the range above then you will encounter a package dependency error.
- Please note, if you are installing a version of
- Materializes the
fivetran_log__audit_tableincrementally, and employs partitioning for BigQuery users. As a non-incremental table, this model involved high runtimes for some users (#27)- If you would like to apply partitioning to the underlying source tables (ie the
LOGtable), refer to Fivetran docs on how to do so.
- If you would like to apply partitioning to the underlying source tables (ie the
- Expands compatibility to Postgres!
🎉 dbt v1.0.0 Compatibility Pre Release 🎉 An official dbt v1.0.0 compatible version of the package will be released once existing feature/bug PRs are merged.
- Adjusts the
require-dbt-versionto now be within the range [">=1.0.0", "<2.0.0"]. Additionally, the package has been updated for dbt v1.0.0 compatibility. If you are using a dbt version <1.0.0, you will need to upgrade in order to leverage the latest version of the package.- For help upgrading your package, I recommend reviewing this GitHub repo's Release Notes on what changes have been implemented since your last upgrade.
- For help upgrading your dbt project to dbt v1.0.0, I recommend reviewing dbt-labs upgrading to 1.0.0 docs for more details on what changes must be made.
- Upgrades the package dependency to refer to the latest
dbt_fivetran_utils. The latestdbt_fivetran_utilspackage also has a dependency ondbt_utils[">=0.8.0", "<0.9.0"].- Please note, if you are installing a version of
dbt_utilsin yourpackages.ymlthat is not in the range above then you will encounter a package dependency error.
- Please note, if you are installing a version of
- n/a
- Added logic in the
fivetran_log__connector_statusmodel to accommodate the way priority-first syncs are currently logged. Now, each connector'sconnector_healthfield can be one of the following values:- "broken"
- "incomplete"
- "connected"
- "paused"
- "initial sync in progress"
- "priority first sync"
Once your connector has completed its priority-first sync and begun syncing normally, it will be marked as
connected.
- Added this changelog to capture iterations of the package!
- n/a
