Skip to content

dbt-core v1.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 03 Dec 18:50
ec1f609

dbt Core 1.0.0 - W. E. B. Du Bois (December 3, 2021)

Breaking changes

  • The two type of test definitions are now "singular" and "generic" (instead of "data" and "schema", respectively). The test_type: selection method accepts test_type:singular and test_type:generic. (It will also accept test_type:schema and test_type:data for backwards compatibility) (#3234, #3880). Not backwards compatible: The --data and --schema flags to dbt test are no longer supported, and tests no longer have the tags 'data' and 'schema' automatically applied.
  • Deprecated the use of the packages arg adapter.dispatch in favor of the macro_namespace arg. (#3895)
  • Enable on-run-start and on-run-end hooks for dbt test. Add flags.WHICH to execution context, representing current task (#3463, #4004)
  • Replace greedy flag/property for test selection with indirect_selection: eager/cautious flag/property. Set to eager by default. Note: This reverts test selection to its pre-v0.20 behavior by default. dbt test -s my_model will select multi-parent tests, such as relationships, that depend on unselected resources. To achieve the behavior change in v0.20 + v0.21, set --indirect-selection=cautious on the CLI or indirect_selection: cautious in yaml selectors. (#4082, #4104)
  • In v1.0.0, pip install dbt will raise an explicit error. Instead, please use pip install dbt-<adapter> (to use dbt with that database adapter), or pip install dbt-core (for core functionality). For parity with the previous behavior of pip install dbt, you can use: pip install dbt-core dbt-postgres dbt-redshift dbt-snowflake dbt-bigquery (#4100, #4133)
  • Reorganize the global_project (macros) into smaller files with clearer names. Remove unused global macros: column_list, column_list_for_create_table, incremental_upsert (#4154)
  • Introduce structured event interface, and begin conversion of all legacy logging (#3359, #4055)
    • This is a breaking change for adapter plugins, requiring a very simple migration. See events module README for details.
    • If you maintain another kind of dbt-core plugin that makes heavy use of legacy logging, and you need time to cut over to the new event interface, you can re-enable the legacy logger via an environment variable shim, DBT_ENABLE_LEGACY_LOGGER=True. Be advised that we will remove this capability in a future version of dbt-core.
  • Restrict secret env vars (prefixed DBT_ENV_SECRET_) to profiles.yml + packages.yml only. Raise an exception if a secret env var is used elsewhere (#4310, #4311)
  • Reorder arguments to config.get() so that default is second (#4273, #4297)

Features

  • Normalize global CLI arguments/flags (#2990, #3839)
  • Turns on the static parser by default and adds the flag --no-static-parser to disable it. (#3377, #3939)
  • Generic test FQNs have changed to include the relative path, resource, and column (if applicable) where they are defined. This makes it easier to configure them from the tests block in dbt_project.yml (#3259, #3880
  • Turn on partial parsing by default (#3867, #3989)
  • Generic test can now be added under a generic subfolder in the test-paths directory. (#4052)
  • Add result:<status> selectors to automatically rerun failed tests and erroneous models. This makes it easier to rerun failed dbt jobs with a simple selector flag instead of restarting from the beginning or manually running the dbt models in scope. (#3859, #4017)
  • dbt init is now interactive, generating profiles.yml when run inside existing project (#3625)
  • Avoid error when missing column in YAML description (#4151, #4285)
  • Allow --defer flag to dbt snapshot (#4110, #4296)
  • Install prerelease packages when version explicitly references a prerelease version, regardless of install-prerelease status (#4243, #4295)
  • Add data attributes to json log messages (#4301)
  • Add event codes to all log events (#4319)
  • Allow nullable error_after in source freshness (#3874, #3955)
  • Add metrics nodes (#4071, #4235)
  • Add support for dbt init <project_name>, and support for skip_profile_setup argument (dbt init -s) (#4156, #4249)

Fixes

  • Add generic tests defined on sources to the manifest once, not twice (#3347, #3880)
  • Skip partial parsing if certain macros have changed (#3810, #3982)
  • Enable cataloging of unlogged Postgres tables (3961, #3993)
  • Fix multiple disabled nodes (#4013, #4018)
  • Fix multiple partial parsing errors (#3996, #4020)
  • Return an error instead of a warning when runing with --warn-error and no models are selected (#4006, #4019)
  • Fixed bug with error_if test option (#4070)
  • Allow retries when the answer from a dbt deps is None (#4178, #4225)
  • Allow specifying default in Jinja config.get with default keyword (#4273, #4297)
  • Fix serialization error with missing quotes in metrics model ref (#4252, #4287)
  • Correct definition of 'created_at' in ParsedMetric nodes (#4298, #4299)
  • Fix serialization error with missing quotes in metrics model ref (#4252, #4287)
  • Correct definition of 'created_at' in ParsedMetric nodes (#4298, #4299)
  • Support partial parsing of env_vars in metrics (#4253, #4322)
  • Fix typo in UnparsedSourceDefinition.__post_serialize__ (#3545, #4349)
  • Configure the CLI logger destination to use stdout instead of stderr (#4368)
  • Make the size of EVENT_HISTORY configurable, via EVENT_BUFFER_SIZE global config (#4411, #4416)
  • Change type of log_format in profiles.yml user config to be string, not boolean (#4394)

Docs

  • Fix non-alphabetical sort of Source Tables in source overview page (docs#81, docs#218)
  • Add title tag to node elements in tree (docs#202, docs#203)
  • Account for test rename: schemageneric, data singular. Use test_metadata instead of schema/data tags to differentiate (docs#216, docs#222)
  • Add metrics (core#216, docs#223)

Under the hood

  • Enact deprecation for materialization-return and replace deprecation warning with an exception. (#3896)
  • Build catalog for only relational, non-ephemeral nodes in the graph (#3920)
  • Enact deprecation to remove the release arg from the execute_macro method. (#3900)
  • Enact deprecation for default quoting to be True. Override for the dbt-snowflake adapter so it stays False. (#3898)
  • Enact deprecation for object used as dictionaries when they should be dataclasses. Replace deprecation warning with an exception for the dunder methods of __iter__ and __len__ for all superclasses of FakeAPIObject. (#3897)
  • Enact deprecation for adapter-macro and replace deprecation warning with an exception. (#3901)
  • Add warning when trying to put a node under the wrong key. ie. A seed under models in a schema.yml file. (#3899)
  • Plugins for redshift, snowflake, and bigquery have moved to separate repos: dbt-redshift, dbt-snowflake, dbt-bigquery
  • Change the default dbt packages installation directory to dbt_packages from dbt_modules. Also rename module-path to packages-install-path to allow default overrides of package install directory. Deprecation warning added for projects using the old dbt_modules name without specifying a packages-install-path. (#3523)
  • Update the default project paths to be analysis-paths = ['analyses'] and test-paths = ['tests]. Also have starter project set analysis-paths: ['analyses'] from now on. (#2659)
  • Define the data type of sources as an array of arrays of string in the manifest artifacts. (#3966, #3967)
  • Marked source-paths and data-paths as deprecated keys in dbt_project.yml in favor of model-paths and seed-paths respectively.(#1607)
  • Surface git errors to stdout when cloning dbt packages from Github. (#3167)
  • Fix intermittent errors in partial parsing tests (#4060, #4068)
  • Make finding disabled nodes more consistent (#4069, #4073)
  • Remove connection from render_with_context during parsing, thereby removing misleading log message (#3137, #4062)
  • Wait for postgres docker container to be ready in setup_db.sh. (#3876, #3908)
  • Prefer macros defined in the project over the ones in a package by default (#4106, #4114)
  • Dependency updates (#4079), (#3532
  • Schedule partial parsing for SQL files with env_var changes (#3885, #4101)
  • Schedule partial parsing for schema files with env_var changes (#3885, #4162)
  • Skip partial parsing when env_vars change in dbt_project or profile (#3885, #4212)
  • Bump artifact schema versions for 1.0.0: manifest v4, run results v4, sources v3. Notable changes: added metrics nodes; schema test + data test nodes are renamed to generic test + singular test nodes; freshness threshold default values (#4191)
  • Speed up node selection by skipping incorporate_indirect_nodes if not needed (#4213, #4214)
  • When on_schema_change is set, pass common columns as dest_columns in incremental merge macros (#4144, #4170)
  • Clear adapters before registering in lib module config generation (#4218)
  • Remove official support for python 3.6, which is reaching end of life on December 23, 2021 (#4134, #4223)
  • Changes unit tests using assertRaisesRegexp to assertRaisesRegex (#4136, #4136)
  • Add --indirect-selection parameter to profiles.yml and builtin DBT_ env vars; stringified parameter to enable multi-modal use (#3997, #4270)
  • Fix filesystem searcher test failure on Python 3.9 (#3689, #4271)
  • Clean up deprecation warnings shown for dbt_project.yml config renames (#4276, #4291)
  • Fix metrics count in compiled project stats (#4290, #4292)
  • First pass at supporting more dbt tasks via python lib (#4200)
  • Change some CompilationExceptions to ParsingExceptions (#4254, #4328)
  • Reorder logic for static parser sampling to speed up model parsing (#4332)
  • Use more augmented assignment statements (#4315), (#4311)
  • Adjust logic when finding approximate matches for models and tests (#3835), #4076)
  • Restore small previous behaviors for logging: JSON formatting for first few events; WARN-level stdout for list task; include tracking events in dbt.log (#4341)
  • Only log cache events if LOG_CACHE_EVENTS is enabled, and disable by default. This restores previous behavior (#4369)
  • Move event codes to be a top-level attribute of JSON-formatted logs, rather than nested in data (#4381)
  • Fix failing integration test on Windows (#4380)
  • Clean up warning messages for clean + deps (#4366)
  • Use RFC3339 timestamps for log messages (#4384)
  • Different text output for console (info) and file (debug) logs (#4379, #4418)
  • Remove unused events. More structured ConcurrencyLine. Replace \n message starts/ends with EmptyLine events, and exclude EmptyLine from JSON-formatted output (#4388)
  • Update events module README (#4395)
  • Rework approach to JSON serialization for events with non-standard properties (#4396)
  • Update legacy logger file name to dbt.log.legacy (#4402)
  • Rollover dbt.log at 10 MB, and keep up to 5 backups, restoring previous behavior (#4405)
  • Use reference keys instead of full relation objects in cache events (#4410)
  • Add node_type contextual info to more events (#4378)
  • Make materialized config optional in node_type (#4417)
  • Stringify exception in GenericExceptionOnRun to support JSON serialization (#4424)
  • Add "interop" tests for machine consumption of structured log output (#4327)
  • Relax version specifier for dbt-extractor to ~=0.4.0, to support compiled wheels for additional architectures when available (#4427)

Contributors

W. E. B. Du Bois (1868–1963)

A famous Philadelphian, and the namesake of this dbt Core release

William Edward Burghardt Du Bois was born three years after the U.S. Civil War ended, and he died one day before the March on Washington for Jobs and Freedom. During the 95 intervening years, he studied, wrote, theorized, and agitated for racial equality in the United States.

He was a leader of the Niagara Movement and co-founder of the NAACP. His was the first definitive study of Reconstruction, a critical (and critically misunderstood) period of American history; he laid intellectual groundwork for civil rights movements in the United States, and independence movements around the world.

Du Bois lived in Philadelphia for one crucial year, 1897, during which he completed the first serious sociological study of any Black community anywhere in the United States. This was The Philadelphia Negro, which took aim at the monolithic stereotypes of inner-city Black America. In their place, Du Bois returned a nuanced, complicated portrait of a diverse and struggling community that was rooted in archival research, descriptive statistics, and questionnaires from over 5,000 interviews, which he personally conduced with the help of Isabel Eaton. It was a foundational work for the field of sociology, not least for its reliance on in survey data and statistical methods.

Three years after he left Philadelphia, and three years before he would publish his most famous work, The Souls of Black Folk, Du Bois was a principal contributor to an unprecedented exhibit for the 1900 Paris Exposition. For a display on Black America at the turn of the century, Du Bois curated 500 photographs, plus five dozen data visualizations (!), hand-drawn in full colour by teams of current and former students at HBCUs. Drawing data from the Census, the Bureau of Labor, and their own research, these charts, graphs, and maps told a story of incredible social and economic progress for Black Americans since Emancipation, yet at the same time quantifying the continued legacy of slavery and the failures of Reconstruction. These visualizations were seen by millions of world’s fair attendees in 1900; stored in the Library of Congress for a century; and finally made visible again, thanks to their publication in W. E. B. Du Bois’s Data Portraits: Visualizing Black America (ed. Whitney Battle Baptiste and Britt Rusert, Princeton Architectural Press, 2018).

Du Bois lived a long life, over the course of which he never stopped studying, changing his mind, reexamining his commitments, making uneasy alliances, falling in and out of favour with powerful people. He was a pragmatist, always listening to the data, always refining his theories of change, always staying true to a core vision of equality, justice, and peace.

The return from your work must be the satisfaction which that work brings you and the world’s need of that work. With this, life is heaven, or as near heaven as you can get. - The Autobiography of W. E. B. Du Bois (1968)