Skip to content

Releases: datahub-project/datahub

v0.11.0

11 Sep 16:39
68ae3bf
Compare
Choose a tag to compare

Release Highlights

Potential Downtime

This release introduces substantial improvements to search ranking which require reindexing indices.

During the reindexing:

  • a system-update job will set indices to read-only and create a backup/clone of each index
  • new components will be prevented from start-up until the reindex completes
  • Helm deployments will go into read-only mode and new ingestion runs will fail

This process can take anywhere from 5 minutes to multiple hours; as a rough estimate, please expect it to take 1 hour for every 2.3 million entities. After the reindex is complete, please check your ingestion run to re-run any that did not complete.

User Experience

New Search and Browse Experience

We have some really exciting improvements to the DataHub user experience in this release! The new search and browse experience, which was first made available in the previous release behind a feature flag, is now on by default. Check out our release notes for v0.10.5 to get more information and documentation on this new Browse experience.

Improvements to Search

In addition to the ranking changes mentioned above, this release includes changes to the highlighting of search entities to understand why they match your query. You can also sort your results alphabetically or by last updated times, in addition to relevance. In this release, we suggest a correction if your query has a typo in it.

Manage Home Page Posts

In this release we now enable you to create and delete pinned announcements on your DataHub homepage! If you have the “Manage Home Page Posts” platform privilege you’ll see a new section in settings called “Home Page Posts” where you can create and delete text posts and link posts that your users see on the home page.

OpenAPI Endpoints Expanded

OpenAPI entity and aspect endpoints expanded to improve developer experience when using this API with additional aspects to be added in the near future.

Metadata ingestion

Added support for Confluent S3 Sink Connector, extracting stored procedures and jobs from mssql, and snowflake shares. Additionally, sql parsing source now converts query logs into CLL and usage.

Developer Experience

The CLI now supports recursive deletes.

Versioned documentation

Starting from this release, we support versioned documentation on the datahub docs site! Select the version you’re on and browse docs specifically at that version.

Performance Improvements

  • Batching of default aspects on initial ingestion (SQL)
  • Improvements to multi-threading. Ingestion recipes, if previously reduced to 1 thread, can be restored to the 15 thread default.
  • Gradle 7 upgrade moderately improves build speed
  • DataHub Ingestion slim images reduced in size by 2GB+

Important Bug Fixes

  • Glue Schema Registry fixed

Deprecation Notice

  • MAE Events are no longer produced. MAE events have been deprecated for over a year.

What's Changed

  • feat(ingest/presto-on-hive): enable partition key for presto-on-hive by @zheyu001 in #8380
  • feat(classification): allow parallelisation to reduce time by @mayurinehate in #8368
  • feat(ingest): Add metabase database id to platform instance mapping by @k-popov in #8359
  • feat(ingest): add ability to read other method types than GET for OAS ingest recipes by @jsmilkstein in #8303
  • fix(ingest): fix data platform urn in dataset_urn_to_key and dataset_key_to_urn by @Masterchen09 in #8209
  • fix(ingest/s3): wrong sorting in case of multi-partition key by @anshbansal in #8536
  • fix(ingest/presto): fix presto on hive test failures by @hsheth2 in #8548
  • Cypress test for managing groups by @kkorchak in #8520
  • feat(ingest/kafka-connect): add support for Confluent S3 Sink Connector by @tusharm in #8298
  • Variable rename - Allows deselection of members in add members modal for a group by @Sukeerthi31 in #8529
  • fix(ingest/s3): catch no such bucket exception instead of failing by @anshbansal in #8549
  • fix(ingest): add tableau sqlglot dep by @hsheth2 in #8552
  • fix(ingetion/mssql): convert dataset urns to lowercase by @siddiquebagwan in #8551
  • Fix flaky add_user smoke test by @kkorchak in #8471
  • feat(ci): use docker registry cache by @hsheth2 in #8544
  • fix(glue): restore glue configurations by @RyanHolstien in #8533
  • build(release): Update files for 0.10.5 release by @iprentic in #8556
  • docs(release): Update updating-datahub.md for 0.10.5 release by @iprentic in #8557
  • feat(ingestion/snowflake): use user email-id in urn generation for top users stat by @siddiquebagwan in #8513
  • docs(development.md): Minor grammatical error by @PauloGoncalvesLima in #8558
  • fix(usage): Update index lifecycle policy to not delete old datahub usage events by @iprentic in #8565
  • fix(ui): Simplify background color for Entity Health Status popover by @jjoyce0510 in #8559
  • fix: add --write args on pre-commit prettier by @yoonhyejin in #8560
  • docs(observe): Add feature doc for Freshness Assertions by @jjoyce0510 in #8547
  • docs(updating): add details on Unified Search & Browse experience by @maggiehays in #8568
  • fix: fix features section by @yoonhyejin in #8571
  • feat(ingest): allow lower freq profiling based on date of month/day of week by @anshbansal in #8489
  • fix(stats): default to 3 months by @anshbansal in #8566
  • fix(aspect): count query only for relevant aspect index by @iprentic in #8569
  • feat(quickstart): bump quickstart start periods more by @hsheth2 in #8573
  • Origin/cypress test for managing policies by @kkorchak in #8554
  • feat(ui) Show source documentation when editing entity documentation by @chriscollins3456 in #8516
  • fix(ingest): handle redaction of configs with int keys by @hsheth2 in #8545
  • fix(ingest/snowflake): maintain qualified name casing, do not lowercase by @mayurinehate in #8574
  • feat(docs): add github repo links to readme and docs by @yoonhyejin in #8422
  • feat(ebean): Add metric in ebean aspect DAO for failed tries, as well as failed operation… by @iprentic in #8576
  • refactor(search) Use search across multiple-entities API, deprecate Aggregator classes by @iprentic in #8498
  • feat(siblings): dont show multiple platform icons if the siblings are ghost nodes by @gabe-lyons in #8543
  • docs(lineage): Add description to make_lineage_mce by @eboneil in #8596
  • doc(ingest/log): failure log at pipeline level document by @anshbansal in #8591
  • Dataset ownership test by @kkorchak in #8583
  • doc(release): release notes for 0.2.10 by @anshbansal in #8599
  • docs(release): fix typo by @anshbansal in #8600
  • feat(ui): apply views to: domains, containers, terms by @eboneil in #8572
  • feat(search): embedded view dropdown by @joshuaeilers in #8598
  • fix(ingest/file): remove entity_type_counts and aspect_counts by @hsheth2 in #8586
  • fix(ingest): use hive pure_sasl variant by @hsheth2 in #8570
  • Feat(ingest/ldap)fix list index out of range error by @alplatonov in https://githu...
Read more

v0.10.5

02 Aug 03:58
4f9fc67
Compare
Choose a tag to compare

Release Highlights

NEW: Unified Search and Browse Experience

It’s here, it’s here! We are incredibly excited to roll out our re-designed, streamlined Search and Browse experience. End-users now have a one-stop-shop to search for specific data entities and browse across systems, making it easier than ever to find the most relevant and meaningful resources within DataHub.

Checkout the screenshot below and get a full walk-through in this video!

CleanShot 2023-08-03 at 14 47 55@2x

User Experience

  • Column-Level Lineage (CLL) visualization update: you can now visualize CLL relationships through DataJobs (i.e. Airflow DAGs)
  • Unique Glossary Terms: We now prevent creating duplicate Glossary Term names within a Term Group
  • Domains: You can now configure the Documentation tab to be the default landing page within a Domain
  • Formatting updates to Row Count to make large numbers more human readable (ie. 3283337 > 3.2M)
  • Stats Tab: Y-axis scale now dynamically set to reflect the minimum & maximum values, improving readability

Metadata ingestion

Ingestion Enhancements:

  • BigQuery: Set platform_instance using project_id
  • PowerBI: Ingest datasets not used in visualizations (tiles/pages
  • Kafka Connect: Ability to set platform_instance
  • Nifi: Support for basic auth
  • Presto on Hive: Extract all table properties from Hive Metastore
  • Elasticsearch: Support for basic profiling
  • Add advanced configuration for LDAP manager ingestion

Lineage Improvements:

  • Schema-aware SQL parsing to derive column-level lineage
  • Column-level lineage support for BigQuery, Tableau, and Snowflake View definitions
  • Snowflake: Extract Snowpipe S3 lineage

Developer Experience

  • Fine-grained ownership policies
  • PATCH support for DataJob Inputs/Outputs
  • New endpoints to extract size of time-series indices and truncate/cleanup time-series indices in Elasticsearch; support for bulk-deletes
  • Initial support for exception reporting via Sentry
  • New OpenAPI endpoint to get Task Status
  • SDK: Easily generate container URNs

Docs

  • Improvements to our File-Based Lineage doc, specifically focused on Fine-Grained Lineage config components (link)
  • Code examples of how to manage Posts within DataHub (link)
  • Guide to generating custom browse paths for the new search experience (link)

What's Changed

  • refractor(classification): datahub classifier init by @mayurinehate in #8193
  • fix(glue): fix typo in reported warning, report with flow_urn by @mayurinehate in #8138
  • fix(ingest/delta-lake): fix CI issues due to delta lake version bump by @mayurinehate in #8215
  • Upgrade kafka and its dependencies to 3.4 in docker compose by @jinlintt in #8161
  • chore(release): update default cli for managed ingestion by @pedro93 in #8226
  • fix(ownership): Corrects graphQL resolver for entity operations by @pedro93 in #8219
  • fix(cli/quickstart): handle docker hangs gracefully by @hsheth2 in #8211
  • fix(cli): make quickstart robust to docker race conditions by @hsheth2 in #8233
  • fix(search): tag/term should filter for both entity and field level by @anshbansal in #7881
  • docs(tests): document test eval endpoint by @anshbansal in #8227
  • feat(ingest/bigquery_v2): enable platform instance using project id by @asikowitz in #8216
  • feat(stats): make rowcount more human readable by @joshuaeilers in #8232
  • docs(es): Update aws deploy docs to correct ElasticSearch version by @iprentic in #8240
  • feat(sdk): support patches as MCPs in file source by @hsheth2 in #8220
  • fix(apiAuth): add resources where applicable and update docs by @RyanHolstien in #8234
  • feat(patch): support datajob input output by @RyanHolstien in #8190
  • feat(ingest/unity): Set external url for containers and datasets by @asikowitz in #8238
  • docs(airflow): add docs on custom operators by @matthew-coudert-cko in #7913
  • chore(release): update datahub upgrade docs by @pedro93 in #8228
  • fix(ingestion/tableau): Remove unused field documentViewId by @mohdsiddique in #8225
  • feat(ui): create fast path for immediate processing of ui sourced changes by @RyanHolstien in #8200
  • fix(ingest/druid) Handling gracefully if no table returned in a schema by @treff7es in #8203
  • fix(kafka-setup): bump kafka version by @david-leifker in #8245
  • feat(ingestion/powerbi): Ingest datasets not used in PowerBI visualization(tiles/pages) by @mohdsiddique in #8212
  • fix(sdk/dataflow): deprecate cluster and use env and platform_instance instead by @shubhamjagtap639 in #8201
  • fix(ingest): pass platform correctly to browse path v2 helper by @asikowitz in #8244
  • feat(search): Supporting Aggregations for hasX fields by @jjoyce0510 in #8241
  • fix(ingest): Call validator on the base urn as well as aspect components when ingesting by @iprentic in #8250
  • docs(website): adjust markprompt z-index so it's not covered by nav by @jeffmerrick in #8255
  • fix(patch): Fix exception when using default patch for patching missing aspects by @jjoyce0510 in #8221
  • fix(custom-search): revert underscore as quoted by @david-leifker in #8163
  • chore(ci): add back optional static sleep for tests by @anshbansal in #8258
  • chore(checkbox): darken all checkboxes by @joshuaeilers in #8248
  • chore(assertions): catch any exception on assertion delete by @joshuaeilers in #8247
  • feat(opensearch): Rollover usage events at a file size rather than time-based manner by @iprentic in #8182
  • fix(ingest/okta): Set default of okta_profile_to_username_attr to email by @asikowitz in #8263
  • feat(ui) Update Search & Browse to be a unified experience by @chriscollins3456 in #8235
  • fix(ingest/tableau): split table columns query from datasources query by @mayurinehate in #8217
  • fix(ingest/okta): Set default of okta connector to match OIDC defaults by @anshbansal in #8272
  • feat(elasticsearch): Add endpoint for getting the size of timeseries indices by @iprentic in #8265
  • feat(ingest/delete-cli): Add configurable batch size; update docs by @asikowitz in #8274
  • fix aggregation sorting in browsev2 sidebar by @joshuaeilers in #8276
  • Support de-selecting browse paths by @joshuaeilers in #8242
  • feat(cli): Initial support for sending exceptions to Sentry by @treff7es in #7172
  • fix(ingestion/powerbi): use admin api resolver to fetch modified workspaces by @mohdsiddique in #8273
  • fix: dbt-athena types mapping for complex types by @svdimchenko in #8264
  • feat(graphql) Prevent duplicate glossary term names within a group by @chriscollins3456 in #8187
  • Add retries to JavaEntityClient:deleteReferencesTo by @joshuaeilers in #8268
  • feat(ingest): Create zero usage aspects by @asikowitz in #8205
  • fix(docs) Update Chrome extension docs to reflect current reality by @chriscollins3456 in #8284
  • refactor(validations): Add URL-based Routing to Dataset Validations Tab by @jjoyce0510 in #8254
  • fix(metadata-io): retry transactions on serialization errors when using a PostgreSQL database by @Masterchen09 in #8278
  • docs(ingest/lineage): Update fine grained file lineage docs by @eboneil in https://github...
Read more

v0.10.4

12 Jun 14:22
f2c66fd
Compare
Choose a tag to compare

Release Highlights

User Experience

  • You can now create and assign Custom Ownership types within DataHub; plus, we now display the owner type on an Entity Page
    ownershiptype-displayed

  • Various bug fixes to Column Level Lineage visualization

Metadata ingestion

  • You can now define column-level lineage (aka fine-grained lineage) via our file-based lineage source
  • Looker: Ingest Looks that are not part of a Dashboard
  • Glue: Error reporting now includes lineage failures
  • BigQuery: Now support deduplicating LogEntries based on insertId, timestamp, and logName

Docs

  • CSV Enricher: improvements to sample CSV and recipe
  • Guide for changing default DataHub credentials
  • Updated guide to apply time-based filters on Lineage

What's Changed

  • ci(ingest/kafka): improve kafka integration test reliability by @hsheth2 in #8085
  • fix(ingest/bigquery): Deduplicate LogEntries based on insertId, timestamp, logName by @asikowitz in #8132
  • feat(ingest/glue): report glue job lineage failures, update doc by @mayurinehate in #8126
  • feat(lineage source): add fine grained lineage support by @anshbansal in #7904
  • docs(glue): fix broken link by @mayurinehate in #8135
  • feat(custom ownership): Adds Custom ownership types as a top level entity by @pedro93 in #8045
  • Update updating-datahub.md for v0.10.3 release by @iprentic in #8139
  • feat: add dbt-athena adapter support for column types mapping by @svdimchenko in #8116
  • docs(csv-enricher): add example csv file & recipe by @gabe-lyons in #8141
  • chore(ci): update base requirements file by @anshbansal in #8144
  • fix(ingest/s3): Path spec aware folder traversal by @treff7es in #8095
  • fix(ui) Fix selecting columns in Lineage tab for CLL by @chriscollins3456 in #8129
  • feat(search): adding support for _entityType filter in the application layer + frontend by @gabe-lyons in #8102
  • docs(ingest/nifi): fix broken links by @mayurinehate in #8143
  • fix(scroll): fix scroll cache key for hazelcast by @RyanHolstien in #8149
  • chore(json): fix json vulnerability by @RyanHolstien in #8150
  • fix(ingest/json-schema): handle property inheritance in unions by @hsheth2 in #8121
  • chore(log): fix log as error instead of info by @anshbansal in #8146
  • fix(lineagecounts) Include entities that are filtered out due to sibling logic in the filtered count of lineage counts by @iprentic in #8152
  • fix(stats): display consistent query count on stats tab by @joshuaeilers in #8151
  • fix(ingest): remove original_table_name logic in sql source by @hsheth2 in #8130
  • feat(ingest): add more fail-safes to stateful ingestion by @hsheth2 in #8111
  • feat(ingest/snowflake): support for more operation types by @mayurinehate in #8158
  • fix(ui) Show Entities first on Domain pages again by @chriscollins3456 in #8159
  • fix(ingest/nifi): allow nifi site url with context path by @mayurinehate in #8156
  • feat(ingest): Create Browse Paths V2 under flag by @asikowitz in #8120
  • fix(ingestion/looker): set project-name for imported_projects views by @mohdsiddique in #8086
  • fix(docs): Fix ownership type typos by @pedro93 in #8155
  • docs(townhall) feb and march town hall agenda and recording by @maggiehays in #7676
  • feat(ingest/unity): Add qualified name to dataset properties by @asikowitz in #8164
  • feat(ingest/bigquery_v2): enable platform instance using project id by @Khurzak in #8142
  • feat(ingest/snowflake): Deprecate legacy lineage and optimize query history joins by @asikowitz in #8176
  • fix(ingest/kafka): Fixing error printing in Kafka properties get call by @treff7es in #8145
  • fix(ingest/snowflake): set use_quoted_name to profile lowercase tables by @mayurinehate in #8168
  • feat(classification): support for regex based custom infotypes by @mayurinehate in #8177
  • fix(restli): update base client retry logic by @david-leifker in #8172
  • fix(ingest): Fix modeldocgen; bump feast to relax pyarrow constraint by @asikowitz in #8178
  • refactor(ci): move from sleep to kafka lag based testing by @shirshanka in #8094
  • docs(lineage): document timestamp filtering in lineage feature by @iprentic in #8174
  • build(ingest/feast): Pin feast to minor version by @asikowitz in #8180
  • feat(ingest/snowflake): Okta OAuth support; update docs by @asikowitz in #8157
  • feat(ingest/presto-on-hive): add support for extra properties and merge property capabilities by @treff7es in #8147
  • docs(managed datahub): release notes for v0.2.8 by @anshbansal in #8185
  • fix(nocode): fix DeleteLegacyGraphRelationshipsStep for Elasticsearch by @david-leifker in #8181
  • feat(docker):Add the jattach tool to the docker container(#7538) by @yangjiandan in #8040
  • refactor: Return original exception as caused by by @Jorricks in #7722
  • docs(ingest) Add MetadataChangeProposalWrapper import to example code by @iprentic in #8175
  • fix(ingest/kafka): Better error handling around topic and topic description extraction by @asikowitz in #8183
  • fix(vulnerabilities)/vulnerabilities_fixes_datahub (#8075) by @david-leifker in #8189
  • fix: add dedicated guide on changing default credentials by @yoonhyejin in #8153
  • feat(classification): configurable minimum values threshold by @mayurinehate in #8186
  • fix(ingestion/looker): ingest looks not part of dashboard by @mohdsiddique in #8140
  • fix(ingest/profiling): only apply monkeypatches once when profiling by @hsheth2 in #8160
  • docs(tableau): site config is required for tableau cloud / tableau online by @mohdsiddique in #8041
  • fix(ingest/bigquery): Swap log order to avoid confusion by @asikowitz in #8197
  • fix(ingest/redshift): Adding env parameter where it was missing for urn generation by @treff7es in #8199
  • revert(ingest/bigquery): Do not emit DataPlatformInstance; remove references to platform_instance by @asikowitz in #8196
  • docs(managed datahub): add docs link to v0.2.8 by @anshbansal in #8202
  • Add combined health check endpoint which can check multiple components by @iprentic in #8191
  • chore(cp-schema-registry): bump minor version by @david-leifker in #8192
  • feat(ingest): Produce browse paths v2 on demand and with platform instance by @asikowitz in #8173

New Contributors

Full Changelog: v0.10.3...v0.10.4

v0.10.3

25 May 20:20
1478d70
Compare
Choose a tag to compare

Release Highlights

User Experience

  • Define Data Products via YAML and manage associated entities within a Domain
  • Search experience: quickly apply a filter at time of search
  • Form-based PowerBI ingestion

Developer Experience

  • Progress toward Removing Confluent Schema Registry requirement -- Helm & Quickstart simplifications to follow
    • NOTE: this will only work for new deployments of DataHub; If you have already deployed DataHub with Confluent Schema Registry, you will not be able to disable it
  • Delete CLI - correctly handles deleting timeseries aspects
  • Ongoing improvements to Quickstart stability
  • Support entity types filter in get_urns_by_filter
  • Search customization
    • regex based query matching
    • full control over scoring functions (useable on any document field, i.e. tags, deprecated flags, etc)
    • enable/disable fuzzy, prefix, exact match queries

Ingestion

  • BigQuery - Improve ingestion disk usage & speed; extract dataset usage from Views
  • Unity Catalog - Capture create/last modified timestamps; extract usage; data profiling support
  • PowerBI - Update workspace concept mapping; support modified_since, extract_dataset_schema, and more
  • Superset – support stateful ingestion
  • Business Glossary – Simplify ingestion source
  • Kafka – Add description in dataset properties
  • S3 – Support stateful ingestion & last_updated
  • CSV Enricher – Support updating more types
  • PII Classification - Configurable sample size
  • Nifi - Support Kerberos authentication

What's Changed

  • fix(ingest/bigquery): Add to lineage, not overwrite, when using sql parser by @asikowitz in #7814
  • fix(ingest/bigquery): Enable lineage and usage ingestion without tables by @asikowitz in #7820
  • fix(ingest/bigquery): Do not query columns when not ingesting tables or views by @asikowitz in #7823
  • fix(ingest/bigquery): update usage query, remove erroneous init by @mayurinehate in #7811
  • fix(ingest/bigquery): Handle null values from usage aggregation by @asikowitz in #7827
  • perf(ingest/bigquery): Improve bigquery usage disk usage and speed by @asikowitz in #7825
  • fix(cli): use correct ingestion image in script by @hsheth2 in #7826
  • fix(release): prevent republish of images on release edits by @RyanHolstien in #7828
  • feat(): finish populating the entity registry by @hsheth2 in #7818
  • fix(ui) Fix 404 page routing bug by @chriscollins3456 in #7824
  • feat(ui): Support PowerBI Ingestion via UI form by @jjoyce0510 in #7817
  • fix(ingest/snowflake): fix column name in snowflake optimised lineage by @mayurinehate in #7834
  • feat(ingest/unity): capture create/lastModified timestamps by @hsheth2 in #7819
  • fix(test): fix spark lineage test by @david-leifker in #7829
  • docs(): add markprompt help chat by @jeffmerrick in #7837
  • Update DataJobInputOutput.pdl to express that CLL fields are not shown in the UI right now by @gabe-lyons in #7830
  • feat(cli): improve quickstart stability by @hsheth2 in #7839
  • chore(ci): regular upgrade base requirements.txt by @anshbansal in #7821
  • feat(timeseries): Support sorting timeseries aspects by non-timestampMillis field + fix operations resolver by @jjoyce0510 in #7840
  • doc(ingestion/tableau): Fix rendering ingestion quickstart guide by @mohdsiddique in #7808
  • fix(ingest): pin sqlparse version by @hsheth2 in #7847
  • feat(urn): Add a validator when creating an URN that it is no longer than the li… by @iprentic in #7836
  • chore(ingest): bug fix in sqlparse pin by @hsheth2 in #7848
  • feat: enriching guide on creating dataset by @yoonhyejin in #7777
  • feat(docs): consolidate api guides by @yoonhyejin in #7857
  • fix(ingest/salesforce): use report timestamp for operations by @hsheth2 in #7838
  • chore(ci): fix CI failing due to lint by @anshbansal in #7863
  • fix(mcl): fix improper pass by reference by @RyanHolstien in #7860
  • feat(urn) Add validator to reject URNs which contain the character we plan to u… by @iprentic in #7859
  • feat(elasticsearch): Add servlet which provides an endpoint for a healthcheck on the ES cl… by @iprentic in #7799
  • fix(ui) Add UI fixes and design tweaks to AutoComplete by @chriscollins3456 in #7845
  • fix(ui) Get all entity assertions in chrome extension by @chriscollins3456 in #7849
  • refactor(platform): Refactoring ES Utils, adding EXISTS condition support to Filter Criterion by @jjoyce0510 in #7832
  • chore(ui): change background color to transparent for avatar with photoUrl by @hieunt-itfoss in #7527
  • refactor(ingest): Add helper DataHubGraph methods by @asikowitz in #7851
  • fix(ui) Disable cache on Domain and Glossary Related Entities pages by @chriscollins3456 in #7867
  • fix(cache): Fix cache key serialization in search service by @pedro93 in #7858
  • docs(ingest): update dbt and aws docs by @hsheth2 in #7870
  • docs(ingest): fix CorpGroup example by @hsheth2 in #7816
  • docs(ingest/powerbi): update workspace concept mapping by @eeepmb in #7835
  • feat(ingest/powerbi): support modified_since, extract_dataset_schema and many more by @aezomz in #7519
  • Remove usages of commons-text library lower than 1.10.0 by @iprentic in #7850
  • feat(glue): allow resource links to be ignored by @YusufMahtab in #7639
  • feat(ingestion): lookml refinement support by @mohdsiddique in #7781
  • feat(ingest/unity): Ingest ownership for containers; lookup service principal display names by @asikowitz in #7869
  • Logging and test models fixes by @david-leifker in #7884
  • feat(model) Add ContainerPath aspect model by @chriscollins3456 in #7774
  • bug(7882): run kafka-configs.sh on DataHubUpgradeHistory_v1 to make sure the retention.ms is set to infinite by @jinlintt in #7883
  • fix: refactor toc by @yoonhyejin in #7862
  • feat(cli): Modifies ingest-sample-data command to use DataHub url & token based on config by @pedro93 in #7896
  • feat(ingest/snowflake): optionally emit all upstreams irrespective of recipe pattern by @mayurinehate in #7842
  • fix(ingestion/tableau): backward compatibility with version 2021.1 an… by @mayurinehate in #7864
  • fix(ingest/dbt): ensure dbt shows view properties by @hsheth2 in #7872
  • docs(airflow): add debug guide on url generation by @hsheth2 in #7885
  • feat(sdk): support entity types filter in get_urns_by_filter by @hsheth2 in #7902
  • fix(ingest/snowflake): fix optimised lineage query, filter temporary … by @mayurinehate in #7894
  • fix(ingest/bigquery): fix handling of time decorator offset queries by @mayurinehate in #7843
  • fix(ingest): fix minor bug + protective dep requirements by @hsheth2 in #7861
  • fix(cli): remove duplicate labels from quickstart files by @hsheth2 in #7886
  • Revert "feat(cli): Modifies ingest-sample-data command to use DataHub… by @pedro93 in #7899
  • feat(sdk): add DataHubGraph.get_entity_semityped method by @hsheth2 in #7905
  • test(ingest/biz-glossary): add test for enable_auto_id by @hsheth2 in #7911
  • feat(ingest): add GCS ingestion source by @mayurinehate in #7903
  • [bugfix] Fix remote file ingestion...
Read more

DataHub v0.10.2

13 Apr 23:26
4ec280e
Compare
Choose a tag to compare

Known Issues

  • Postgresql: In release v0.10.1 the default value for max_threads was increased in the CLI from 1 to 15. This creates an issue with Postgresql transactions. The recommended workaround is to decrease the max_threads in your ingestion recipes to 1 if running Postgresql for the GMS backend.
  • BigQuery: BigQuery connector depends on a bad version of SQLParse, which manifest as str object is not callable error. This has since been fixed in CLI release version v0.10.2.2.

Release Highlights

Metadata Ingestion

New

  • [redshift] Redshift Combining Usage and Metadata Extraction
  • [bigquery] Cross-Project Usage Support (using File System)
  • [snowflake] Push down Lineage Extraction to Snowflake Access History API
  • [azure-ad] Support stateful ingestion - Automatically remove groups and users when they are removed in Azure.
  • [okta] Support stateful ingestion - Automatically remove groups and users when they are removed in Okta.
  • [tableau] Extract lineage from CSQL queries in Tableau ingestion
  • [snowflake] Better error message on key pair authentication
  • [sdk] Support executing GraphQL Queries via DataHubGraph
  • [unity] Support extracting ownership
  • [postgres] Support extracting metadata from all databases in a single recipe

Bug Fixes

  • [bigquery] Capture all operation types when ingesting operational stats
  • [bigquery] Fix and refactor exported audit logs query
  • [redshift] Fix SQL for extracting lineage from insert queries

User Experience

New

  • Auto-Complete UX Refresh - Quickly filter search results inside autocomplete experience
  • View: Support views on the Auto-Complete Search Bar

Bug Fixes

  • Fix bug where Tag names do not render properly in search previews
  • Fix bug where Tag color does not render properly in search autocomplete
  • Fix bug when adding Tags and Glossary Terms to nested schema fields
  • Fix bug where DataHub would redirect you when clicking to navigate back home
  • Fix bug where Metadata Tests results did not show if they were all passing

Documentation

Developer Experience

  • Add performance testing framework for BigQuery usage

What's Changed

  • fix(cli): allow usage without kafka by @hsheth2 in #7677
  • test(elasticsearch): Add unit test for timestamp-based lineage feature by @iprentic in #7661
  • feat(docs-website): add docs on creating users and groups by @yoonhyejin in #7574
  • chore(ci): add coverage code for python by @anshbansal in #7681
  • doc(release): managed datahub v0.2.4 release notes by @anshbansal in #7679
  • refactor(ingest/bigquery): add inline comments + refactor in table name parsing by @mayurinehate in #7609
  • fix(ingest/looker): skip empty user ids for usage by @hsheth2 in #7686
  • fix(ingest/dbt): enable incremental lineage by default by @hsheth2 in #7674
  • fix(ingest/bigquery): Fix BigQueryTableType enum accesses by @asikowitz in #7685
  • fix(ingest/looker): correct looker/lookml capability reports by @hsheth2 in #7683
  • feat(ingest/looker): enable looker usage ingestion by default by @hsheth2 in #7684
  • doc(freshness): add faq for dataset freshness by @anshbansal in #7693
  • chore(lint): fix lint in looker by @anshbansal in #7695
  • fix(ingest/bigquery): quote string constants in query by @mayurinehate in #7694
  • feat(ui) Update auto-complete functionality and design by @chriscollins3456 in #7515
  • fix(ui) Update Looker/Lookml forms to set client id and deploy key as Secrets by @chriscollins3456 in #7479
  • perf(ingest): Improve FileBackedDict iteration performance; minor refactoring by @asikowitz in #7689
  • feat(quickstart): move quickstart back to master by @hsheth2 in #7697
  • test(ingest/dbt): add test for column meta match by @hsheth2 in #7673
  • feat(ingest/postgres): support extracting metadata from all databases in single recipe by @mayurinehate in #7581
  • docs(): generate docs for our Python SDK by @hsheth2 in #7612
  • fix(ingest/redshift): Lineage query fix to work with the latest redshift by @treff7es in #7698
  • feat(ingestion): azure-ad stateful ingestion by @mohdsiddique in #7701
  • chore(ingest): formatting + cleanup MCPW usages by @hsheth2 in #7706
  • test(ingest/bigquery): Add performance testing framework for bigquery usage by @asikowitz in #7690
  • fix(docs): Fixing timeseries delete doc until code path is fixed by @jjoyce0510 in #7711
  • docs: add concept section by @yoonhyejin in #7655
  • JWT authenticator with asymmetric PublicKey verification for JWT token. by @syedzoherer in #6495
  • fix(ingestion): fix AssertionError in base_transformer by @sgomezvillamor in #7702
  • feat(docs): support inlining code snippets from files by @hsheth2 in #7712
  • feat(ingestion) Allow for ingestion to read files remotely by @xiphl in #7552
  • feat: add pre-commit by @yoonhyejin in #7680
  • docs(okta): add how to use email in urns by @anshbansal in #7708
  • feat(ingest/snowflake): hide host_port from snowflake docs by @hsheth2 in #7717
  • feat(ingest/bigquery): Capture all operation types when ingesting operational stats by @asikowitz in #7723
  • doc(redshift) - Adding Redshift ingestion quickstart guide by @treff7es in #7700
  • refactor(ingest): Minor cleanup of File, CsvEnricher, BusinessGlossary, and FileLineage sources by @asikowitz in #7718
  • feat(ingest/lookml): support views with derived_table.explore_source by @hsheth2 in #7704
  • fix(ci): Fixing broken Domains Test by @jjoyce0510 in #7746
  • feat(ingest/dbt): include dbt unique_id in properties by @hsheth2 in #7737
  • docs(airflow): update with information for new plugin by @anshbansal in #7732
  • chore(ingest): change kafka connect mapped ports by @hsheth2 in #7728
  • feat(docs): clear up source configs by @hsheth2 in #7720
  • feat(ingest): emit state payloads as soft-deleted by @hsheth2 in #7714
  • fix(sdk): remove rest emitter to graph cache in CorpGroup by @bossenti in #7743
  • refactor(ingest): Use sqlite.Row row_factory for FileBackedCollections by @asikowitz in #7739
  • refactor(ingest/bigquery): Standardize audit log parsing and make TopKDict a DefaultDict by @asikowitz in #7738
  • doc(ingestion): tableau quick ingestion guide by @mohdsiddique in #7682
  • docs(search): Add example search for finding tables without the name field by @iprentic in #7647
  • feat(ingest/dbt): update subtypes for dbt by @hsheth2 in #7750
  • feat(snowflake): better error message on key pair authentication by @anshbansal in #7734
  • feat(sdk): fix ownership emission for groups by @hsheth2 in #7751
  • fix(TestResults UI):show non-failing TestResult by @blankon123 in #7747
  • fix(ingest/bigquery): fix and refractor exported audit logs query by @mayurinehate in #7699
  • fix(ingest/demo-data): fix bug in path type by @hsheth2 in https://github.com/datahub-project...
Read more

DataHub v0.10.1

24 Mar 00:38
864ac2d
Compare
Choose a tag to compare

Known Issues

CLI

  • BigQuery: Table and Column Level profile broken due to bad assumption introduced in this version. Please use an alternate version if you are using the BigQuery Profiling feature.

ElasticSearch

7.9 and below clusters are no longer supported with this release due to lack of case sensitivity support in term queries

Release Highlights

User Experience

  • The Queries Tab has a new look - supports manually adding and annotating queries directly from the UI, making it easier to share trusted SQL logic with others
  • Glossary Terms now shows “Contained by" and "Inherited by" relationships
  • Resolved issues with Download to CSV for large volumes of entities
  • Update to the Analytics tab - view Monthly Active users to keep track of DataHub adoption and activity within your organization
  • Ongoing UI optimizations focused on improve navigation experience

Metadata Ingestion

BigQuery

  • Improvements to memory usage during metadata extraction
  • Ingestion now captures Dataset Labels
  • Emit cross-project usage

PowerBI

  • Support for Platform Instance and uniquely identify multiple instances of the same Platform
  • Support for PowerBI <> (Redshift, BigQuery) lineage extraction
  • Extract entity descriptions

Miscellaneous

  • DataHub Integrations Catalog to quickly filter and search for supported integrations
  • Kafka Connect - support for stateful ingestion & lowercasing URNs
  • Snowflake: improvements to memory usage during metadata extraction
  • Postgres: supports estimated row counts during profiling
  • Fix to dbt ingestion to address inconsistent upper/lower casing
  • S3 ingestion now supports path_specs of multiple buckets in the same recipe
  • Looker: Upgrade Looker API from 3.1 to 4.0
  • Great Expectations: support for lowercasing URNs
  • Tableau: Support for Project Path & Containers; ingestion more resilient to timeout exceptions

Developer Experience

Miscellaneous

  • Neo4j support for lineage time filter
  • Metadata model support for JSON schemas stored in Files, Directories, and Kafka Schema Registry
  • Timeline API now supports Glossary Terms
  • Improvements to startup time for DataHub CLI

API Docs & Guides

  • Table of contents to understand DataHub APIs at a glance
  • Guides:
    • Add Tags, Terms, Owners to entities
    • Create datasets
    • Manage Lineage

Search Improvements

  • searchAcrossEntities/Lineage improvements
  • support searchAfter
  • advanced query, identity autocomplete, exact match weight

Breaking Changes

Lineage Graph UI

  • Previously, DataHub would display Nodes in Lineage Viz even for URNs that do not technically exist (do not have any aspects defined). Now, those nodes are filtered out. This means that lineage which previously existed may not appear anymore in Lineage Graph. This change was done to improve the correctness and consistency of the DataHub experience. If you have feedback, feel free to reach out to the core team. To fix this issue, simply produce "DatasetKey" aspects for any URNs that you'd like to show in Lineage graph.

What's Changed

Read more

DataHub v0.10.0

07 Feb 21:16
cf1e627
Compare
Choose a tag to compare

Release Highlights

Potential Downtime

This release introduces substantial improvements to search functionality which require reindexing indices.

During the reindexing:

  • a system-update job will set indices to read-only and create a backup/clone of each index
  • new components will be prevented from start-up until the reindex completes
  • Helm deployments will go into read-only mode and new ingestion runs will fail

This process can take anywhere from 5 minutes to multiple hours; as rough estimate, please expect it to take 1 hour for every 2.3 million entities. After the reindex is complete, please check your ingestion run to re-run any that did not complete.

If you are deploying containers yourself

If you're deploying the Docker containers yourself (without Helm or Docker-Compose Quickstart), then you'll need to ensure that you first run the acryldata/datahub-upgrade docker image (v0.10.0 tag) with the following environment variables enabled.

Then, run the container this with the command

docker run acryldata/datahub-upgrade:v0.10.0 -u SystemUpdate

For the full set of environment variables required, check out the default docker.env provided for Docker Compose deployments.

This will run the required reindex against your elasticsearch instance, after which other DataHub components should start correctly. If you do not run the datahub-upgrade container successfully, other components in the stack will fail to start correctly.

User Experience

We have some really exciting improvements to the DataHub user experience in this release!

Improved documentation editor, contributed by @ngamanda and the Grab Team.
This work provides a much more intuitive documentation editing experience within the UI, providing “what you see is what you get” formatting & removing the need for markdown expertise.

Additionally, you can easily:

  • Add links to other entities/users within DataHub
  • embed and resize tables & images
  • toggle between font sizes and formats
  • embed syntax-highlighted code blocks

Filter lineage graphs based on time windows
You can now easily see the full lineage graph of an entity at a specific point in time. This makes it much easier to understand how interdependencies have evolved over time and to troubleshoot data issues in the past.

Improvements in Search
As noted above, we have rolled out substantial improvements to Search functionality, making it easier than ever for end-user to find the entities that matter most. This release includes:

  • Stemm & Synonyms
  • Search by full or partial URN
  • Autocomplete improvements
  • Quoted search analyzer for exact & prefix match

Metadata Ingestion

Here are some of the most notable ingestion-related improvements:

  • Redshift: You can now extract lineage information from unload queries – thanks for the contrib, @mmmeeedddsss
  • PowerBI: Ingestion now maps Workspaces to DataHub Containers – thanks for the contrib, @looppi
  • BigQuery: You can now extract lineage metadata from the Catalog API – thanks for the crontrib, @PatrickfBraz
  • Glue: Ingestion now uses table name as the human-readable name – thanks for the contrib, @danielcmessias

Developer Experience

  • This release introduces DataHub Lite - a new experimental lightweight implementation of DataHub. It is intended to enable local developer tooling use-cases such as simple access to metadata for scripts and other tools. DataHub Lite is compatible with the DataHub metadata format and all the ingestion connectors that DataHub supports. Checkout the docs here.

Breaking Changes

#7103 This should only impact users who have configured explicit non-default names for DataHub's Kafka topics. The environment variables used to configure Kafka topics for DataHub used in the kafka-setup docker image have been updated to be in-line with other DataHub components, for more info see our docs on Configuring Kafka in DataHub . They have been suffixed with _TOPIC where as now the correct suffix is _TOPIC_NAME. This change should not affect any user who is using default Kafka names.

What's Changed

Read more

DataHub v0.9.6.1

31 Jan 21:29
Compare
Choose a tag to compare

Release Highlights

Please upgrade from 0.9.6 ASAP to avoid ongoing issues creating and using secrets.

Important Release Notes

With this release, if you are using Neo4J as your graph implementation, you need to set:
GRAPH_SERVICE_DIFF_MODE_ENABLED=false

For GMS (or MAE Consumer for standalone mode).

Bug fix for secrets encryption

  • Prevents decryption errors for existing secrets
  • Affects reading ingestion secret created with a previous release
  • Affects native user password validation

What's Changed

Full Changelog: v0.9.6...v0.9.6.1

DataHub v0.9.6

14 Jan 00:59
5951379
Compare
Choose a tag to compare

⚠️ This Release has been patched. Please upgrade to 0.9.6.1 ⚠️

As of January 19th, 2023 0.9.6.1 is now the official release build, and should be used over 0.9.6. Upgrade to 0.9.6.1 when possible to avoid issues creating and using secrets.



Release Highlights

Important Release Notes

With this release, if you are using Neo4J as your graph implementation, you need to set:
GRAPH_SERVICE_DIFF_MODE_ENABLED=false

For GMS (or MAE Consumer for standalone mode).

User Experience

  • We now support embedding Dashboards, Charts, and Datasets. This allows us to do things like directly embed Looker / Tableau / Mode / Redash Looks, Dashboards, Explores into the Dataset pages themselves.

image

  • [Experimental] You can now customize the number of queries displayed on the Query tab of a Dataset entity

image

  • Improved error messaging for bulk editing via the UI

Metadata Ingestion

  • Update to data profiling to allow configurable number of sample values to be returned
  • Postgres ingestion now supports emitting lineage edges for Views - shoutout to @LucasRoesler for the contribution!
  • Snowflake ingestion now supports extracting tags - shoutout to @frsann for the contribution!
  • Vertica ingestion now supports projections and lineage- thanks for the contribution, @vishalkSimplify!
  • Glue ingestion now emits an s3 lineage edge when data was written with an s3a/s3n client - thanks for the contribution, @danielli-ziprecruiter!

Developer Experience

  • Fixes quickstart/docker compose issues for M1 machines
  • Improvements in reliability and performance of the Restli Service endpoints for ingestion:
    • Scale Restli Service thread pool based on CPU
    • Add retry (exp backoff) to Restli Entity Client
    • MCE no longer relies on GMS for Restli service
    • Converted Restli Service from standalone servlet to Spring injectable
    • Docker build externalized (significantly faster on m1, <7 minute build times, based on this)
    • Frontend asset generation refactor (causing tests to fail intermittently)

What's Changed

  • feat(ingest): add pydantic helper for removed fields by @hsheth2 in #6853
  • chore(0.9.5): Bump defaults for release v0.9.5 by @jjoyce0510 in #6856
  • Revert "fix(ci): remove warnings due to deprecated action" by @anshbansal in #6857
  • refactor(restli-mce-consumer) by @david-leifker in #6744
  • fix(ci): reduce smoke test run time by @anshbansal in #6841
  • fix(security): require signed/encrypted jwt tokens by @david-leifker in #6565
  • feat(ingest): update profiling to fetch configurable number of sample values by @mayurinehate in #6859
  • feat(ingest/airflow): support raw dataset urns in airflow lineage by @hsheth2 in #6854
  • refactor(graphql): make graphqlengine easier to use by @anshbansal in #6865
  • fix(kafka): datahub-upgrade job by @david-leifker in #6864
  • feat(ingest): pass timeout config in kafka admin client api calls by @mayurinehate in #6863
  • chore(ingest): loosen requirements file by @hsheth2 in #6867
  • feat(ingest): upgrade pydantic version by @cccs-eric in #6858
  • fix(elasticsearch): fixes out of order runId writes by @david-leifker in #6845
  • chore(ingest): loosen additional requirements by @hsheth2 in #6868
  • feat(ingest): bigquery/snowflake - Store last profile date in state by @treff7es in #6832
  • docs(google-analytics): Correct grammatical error in README.md by @jx2lee in #6870
  • feat(CI): add venv caching by @szalai1 in #6843
  • feat(ingest/snowflake): handle failures gracefully and raise permission failures by @mayurinehate in #6748
  • fix(runid): always update runid, except when queued by @david-leifker in #6876
  • fix(ingest): conditionally include env in assertion guid by @hsheth2 in #6811
  • chore(ci): update dependencies docs-website by @anshbansal in #6871
  • feat(ui) - Add a custom error message for bulk edit to add clarity by @mkamalas in #6775
  • docs(adding users): Refreshing the docs for adding new DataHub Users by @jjoyce0510 in #6879
  • test(mce-consumer): mockbeans by @david-leifker in #6878
  • feat(ingest): avoid embedding serialized json in metadata files by @hsheth2 in #6742
  • refactor(gradle): move the local docker registry to common location by @david-leifker in #6881
  • refactor(smoke): use env variables by @anshbansal in #6866
  • fix(lint): pin pydantic version by @anshbansal in #6886
  • refactor(docs): Correctly spell elasticsearch in docs by @jjoyce0510 in #6880
  • fix(ingest): okta undefined variable error by @anshbansal in #6882
  • fix(ci): reduce flakiness in add_users, siblings smoke test by @anshbansal in #6883
  • fix(ingest): fall back to default table comment method for all Trino query errors by @marvin-roesch in #6873
  • test(misc): misc test updates by @david-leifker in #6890
  • deprecate(ingest): bigquery - Removing bigquery-legacy source by @treff7es in #6851
  • chore(ingest): remove inferred args to MCPW, part 1 by @hsheth2 in #6819
  • test(ingest/kafka-connect): make docker setup more reliable by @hsheth2 in #6902
  • fix(ingest): profiling (bigquery) - Address biquery profiling query error due to timestamp vs data mismatch by @treff7es in #6874
  • fix(cli): Make datahub quickstart work with latest docker compose in M1 by @pedro93 in #6891
  • fix(cli): fix delete urn cli bug + stricter type annotations by @hsheth2 in #6903
  • fix(ingest/airflow): reorder imports to avoid cyclical dependencies by @stijndehaes in #6719
  • feat: remove jq requirement + tweak modeldocgen args by @hsheth2 in #6904
  • chore(ingest): loosen pyspark and pydeequ deps by @hsheth2 in #6908
  • docs(ingest/looker): fix typos + update lookml github action example by @hsheth2 in #6910
  • fix(ingest/metabase): use card_id in dashboard to chart lineage by @ccpypy in #6583
  • fix(es-setup): create data stream on non-aws by @szalai1 in #6926
  • Adding missing Platform logos by @maggiehays in #6892
  • feat(ingestion): PowerBI# Improve PowerBI source ingestion by @mohdsiddique in #6549
  • Fix compose context for kafka-setup by @szalai1 in #6923
  • feat(backend): Supporting Embeddable Previews for Dashboards, Charts, Datasets by @jjoyce0510 in #6875
  • chore(deps): bump json5 from 2.2.1 to 2.2.3 in /docs-website by @dependabot in #6930
  • chore(deps): bump json5 from 1.0.1 to 1.0.2 in /datahub-web-react by @dependabot in #6931
  • fix(ci): managed ingestion test fix by @anshbansal in #6946
  • feat(ingest): add include_table_location_lineage flag for SQL common by @hsheth2 in #6934
  • feat(ingest): allow extracting snowflake tags by @frsann in #6500
  • chore(ingest): unpin pydantic dep by @hsheth2 in #6909
  • chore(ingest): partially revert pyspark dep from #6908 by @hsheth2 in #6954
  • fix(ingest): use branch info when cloning git repos by @hsheth2 in #6937
  • chore(ingest): remove i...
Read more

DataHub v0.9.5

23 Dec 20:32
c482ef0
Compare
Choose a tag to compare

Release Highlights

Notice: This PR includes a fix for Single Sign-On (OIDC) that was introduced in the previous release, v0.9.4.

Important Release Notes

With this release, if you are using Neo4J as your graph implementation, you need to set:
GRAPH_SERVICE_DIFF_MODE_ENABLED=false

For GMS (or MAE Consumer for standalone mode).

User Experience

  • Manual Lineage is LIVE! You can now add and remove lineage between entities in the Lineage Visualization screen, making it easier than ever to manage the complex relationships between your data resources.

ui_lineage_1
ui_lineage_2
ui_lineage_3

  • Our new Views feature makes it easy to create curated sets of Entities within DataHub. This is a great way to start to isolate the entities that matter most, and provide your DataHub end-users with a streamlined view of the assets that are relevant to their use cases. See the original demo video.

create_view
sharing_views

  • In-App Product Tours are here! When logging into DataHub and/or visiting a new page type for the first time, new users will be prompted with a helpful walkthrough of core functionality to get them familiar with the platform. We’ll continue to add modules as we roll out new features!

in_app_product_tour

  • Automatically send updates to Slack and/or Microsoft Teams when changes are made within DataHub by leveraging our the new Slack and Teams Actions.

Metadata Ingestion

We’re continuing to improve the user experience for UI-based ingestion for the following sources:

  • DataBricks Unity Catalog
  • dbt Cloud
  • MySQL
  • Trino/Presto
  • Microsoft SQL Server
  • MariaDB

If you’re just getting started with UI-based Ingestion, check out our new BigQuery & Snowflake guides.

Stateful ingestion is now supported for Iceberg (thanks for the contrib, @cccs-Dustin!) and LDAP (thanks for the contrib, @bda618!)

What's Changed

New Contributors

Full Changelog: v0.9.4...v0.9.5