-
Notifications
You must be signed in to change notification settings - Fork 975
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Swap latest callouts for fka versionless inline #6607
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,11 +12,7 @@ | |
is_featured: true | ||
--- | ||
|
||
import Latest from '/snippets/_release-stages-from-versionless.md' | ||
|
||
<Latest/> | ||
|
||
**New in dbt: allow Snowflake Python models to access the internet** | ||
## New in dbt: allow Snowflake Python models to access the internet | ||
|
||
With dbt 1.8, dbt released support for Snowflake’s [external access integrations](https://docs.snowflake.com/en/developer-guide/external-network-access/external-network-access-overview) further enabling the use of dbt + AI to enrich your data. This allows querying of external APIs within dbt Python models, a functionality that was required for dbt Cloud customer, [EQT AB](https://eqtgroup.com/). Learn about why they needed it and how they helped build the feature and get it shipped! | ||
|
||
|
@@ -49,7 +45,7 @@ | |
For simplicity’s sake, we will show how to create them using [pre-hooks](/reference/resource-configs/pre-hook-post-hook) in a model configuration yml file: | ||
|
||
|
||
``` | ||
```yml | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed a couple of markdownlint warnings while I was here |
||
models: | ||
- name: external_access_sample | ||
config: | ||
|
@@ -61,7 +57,7 @@ | |
Then we can simply use the new external_access_integrations configuration parameter to use our network rule within a Python model (called external_access_sample.py): | ||
|
||
|
||
``` | ||
```python | ||
import snowflake.snowpark as snowpark | ||
def model(dbt, session: snowpark.Session): | ||
dbt.config( | ||
|
@@ -79,7 +75,7 @@ | |
The result is a model with some json I can parse, for example, in a SQL model to extract some information: | ||
|
||
|
||
``` | ||
```sql | ||
{{ | ||
config( | ||
materialized='incremental', | ||
|
@@ -112,12 +108,12 @@ | |
|
||
This is a very new area to Snowflake and dbt -- something special about SQL and dbt is that it’s very resistant to external entropy. The second we rely on API calls, Python packages and other external dependencies, we open up to a lot more external entropy. APIs will change, break, and your models could fail. | ||
|
||
Traditionally dbt is the T in ELT (dbt overview [here](https://docs.getdbt.com/terms/elt)), and this functionality unlocks brand new EL capabilities for which best practices do not yet exist. What’s clear is that EL workloads should be separated from T workloads, perhaps in a different modeling layer. Note also that unless using incremental models, your historical data can easily be deleted. dbt has seen a lot of use cases for this, including this AI example as outlined in this external [engineering blog post](https://klimmy.hashnode.dev/enhancing-your-dbt-project-with-large-language-models). | ||
Traditionally dbt is the T in ELT (dbt overview [here](https://docs.getdbt.com/terms/elt)), and this functionality unlocks brand new EL capabilities for which best practices do not yet exist. What’s clear is that EL workloads should be separated from T workloads, perhaps in a different modeling layer. Note also that unless using incremental models, your historical data can easily be deleted. dbt has seen a lot of use cases for this, including this AI example as outlined in this external [engineering blog post](https://klimmy.hashnode.dev/enhancing-your-dbt-project-with-large-language-models). | ||
|
||
**A few words about the power of Commercial Open Source Software** | ||
## A few words about the power of Commercial Open Source Software | ||
Check warning on line 113 in website/blog/2024-06-12-putting-your-dag-on-the-internet.md GitHub Actions / vale[vale] website/blog/2024-06-12-putting-your-dag-on-the-internet.md#L113
Raw output
|
||
|
||
In order to get this functionality shipped quickly, EQT opened a pull request, Snowflake helped with some problems we had with CI and a member of dbt Labs helped write the tests and merge the code in! | ||
|
||
dbt now features this functionality in dbt 1.8+ and the "Latest" release track in dbt Cloud (dbt overview [here](/docs/dbt-versions/cloud-release-tracks)). | ||
dbt now features this functionality in dbt 1.8+ and all [Release tracks](/docs/dbt-versions/cloud-release-tracks) in dbt Cloud. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Likewise, this feature is old enough that it's in every release track, not just the Latest one, so saying Latest fka Versionless was less accurate. |
||
|
||
dbt Labs staff and community members would love to chat more about it in the [#db-snowflake](https://getdbt.slack.com/archives/CJN7XRF1B) slack channel. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This article was written during the Keep on Latest Version phase, so it never talked about versionless and explaining that we used to call it versionless was going to mess with the screenshots! So I've just linked to release tracks.