-
Notifications
You must be signed in to change notification settings - Fork 161
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
Lift + shift for cross-db macros #192
Merged
Merged
Changes from 10 commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
85f659a
Initialize lift + shift, dateadd + datediff
jtcohen6 f5e1826
Switch to alternative dev branches
dbeatty10 308d681
Lift and shift cross-database macros from dbt-utils
dbeatty10 3881e0f
Switch namespace from `dbt_utils` to `dbt`
dbeatty10 e1b08fd
Remove conflicting definition of current_timestamp()
dbeatty10 2c05ac1
Trim trailing whitespace
dbeatty10 8f94cc6
Copy functional tests for cross-database macros from dbt-utils
dbeatty10 c9c3ba5
Remove references to other profiles
dbeatty10 15d000d
Kick out the `current_timestamp` + `type_*` macros/tests
dbeatty10 03e4c0d
Merge branch 'main' into dbeatty/utils-lift-shift
dbeatty10 5b60515
Remove branch identifiers
dbeatty10 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{% macro bigquery__bool_or(expression) -%} | ||
|
||
logical_or({{ expression }}) | ||
|
||
{%- endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{% macro bigquery__date_trunc(datepart, date) -%} | ||
timestamp_trunc( | ||
cast({{date}} as timestamp), | ||
{{datepart}} | ||
) | ||
|
||
{%- endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
{% macro bigquery__dateadd(datepart, interval, from_date_or_timestamp) %} | ||
|
||
datetime_add( | ||
cast( {{ from_date_or_timestamp }} as datetime), | ||
interval {{ interval }} {{ datepart }} | ||
) | ||
|
||
{% endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{% macro bigquery__datediff(first_date, second_date, datepart) -%} | ||
|
||
{% if dbt_version[0] == 1 and dbt_version[2] >= 2 %} | ||
{{ return(dbt.datediff(first_date, second_date, datepart)) }} | ||
{% else %} | ||
|
||
datetime_diff( | ||
cast({{second_date}} as datetime), | ||
cast({{first_date}} as datetime), | ||
{{datepart}} | ||
) | ||
|
||
{% endif %} | ||
|
||
{%- endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{# /*BigQuery uses a single backslash: they're -> they\'re. The second backslash is to escape it from Jinja */ #} | ||
{% macro bigquery__escape_single_quotes(expression) -%} | ||
{{ expression | replace("'", "\\'") }} | ||
{%- endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{% macro bigquery__except() %} | ||
|
||
except distinct | ||
|
||
{% endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{% macro bigquery__hash(field) -%} | ||
to_hex({{dbt.default__hash(field)}}) | ||
{%- endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{% macro bigquery__intersect() %} | ||
|
||
intersect distinct | ||
|
||
{% endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{% macro bigquery__listagg(measure, delimiter_text, order_by_clause, limit_num) -%} | ||
|
||
string_agg( | ||
{{ measure }}, | ||
{{ delimiter_text }} | ||
{% if order_by_clause -%} | ||
{{ order_by_clause }} | ||
{%- endif %} | ||
{% if limit_num -%} | ||
limit {{ limit_num }} | ||
{%- endif %} | ||
) | ||
|
||
{%- endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{% macro bigquery__position(substring_text, string_text) %} | ||
|
||
strpos( | ||
{{ string_text }}, | ||
{{ substring_text }} | ||
|
||
) | ||
|
||
{%- endmacro -%} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
{% macro bigquery__right(string_text, length_expression) %} | ||
|
||
case when {{ length_expression }} = 0 | ||
then '' | ||
else | ||
substr( | ||
{{ string_text }}, | ||
-1 * ({{ length_expression }}) | ||
) | ||
end | ||
|
||
{%- endmacro -%} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{% macro bigquery__safe_cast(field, type) %} | ||
safe_cast({{field}} as {{type}}) | ||
{% endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
{% macro bigquery__split_part(string_text, delimiter_text, part_number) %} | ||
|
||
{% if part_number >= 0 %} | ||
split( | ||
{{ string_text }}, | ||
{{ delimiter_text }} | ||
)[safe_offset({{ part_number - 1 }})] | ||
{% else %} | ||
split( | ||
{{ string_text }}, | ||
{{ delimiter_text }} | ||
)[safe_offset( | ||
length({{ string_text }}) | ||
- length( | ||
replace({{ string_text }}, {{ delimiter_text }}, '') | ||
) + 1 | ||
)] | ||
{% endif %} | ||
|
||
{% endmacro %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
import pytest | ||
from dbt.tests.adapter.utils.base_utils import BaseUtils | ||
from dbt.tests.adapter.utils.test_any_value import BaseAnyValue | ||
from dbt.tests.adapter.utils.test_bool_or import BaseBoolOr | ||
from dbt.tests.adapter.utils.test_cast_bool_to_text import BaseCastBoolToText | ||
from dbt.tests.adapter.utils.test_concat import BaseConcat | ||
from dbt.tests.adapter.utils.test_dateadd import BaseDateAdd | ||
from dbt.tests.adapter.utils.test_datediff import BaseDateDiff | ||
from dbt.tests.adapter.utils.test_date_trunc import BaseDateTrunc | ||
from dbt.tests.adapter.utils.test_escape_single_quotes import BaseEscapeSingleQuotesQuote | ||
from dbt.tests.adapter.utils.test_escape_single_quotes import BaseEscapeSingleQuotesBackslash | ||
from dbt.tests.adapter.utils.test_except import BaseExcept | ||
from dbt.tests.adapter.utils.test_hash import BaseHash | ||
from dbt.tests.adapter.utils.test_intersect import BaseIntersect | ||
from dbt.tests.adapter.utils.test_last_day import BaseLastDay | ||
from dbt.tests.adapter.utils.test_length import BaseLength | ||
from dbt.tests.adapter.utils.test_listagg import BaseListagg | ||
from dbt.tests.adapter.utils.test_position import BasePosition | ||
from dbt.tests.adapter.utils.test_replace import BaseReplace | ||
from dbt.tests.adapter.utils.test_right import BaseRight | ||
from dbt.tests.adapter.utils.test_safe_cast import BaseSafeCast | ||
from dbt.tests.adapter.utils.test_split_part import BaseSplitPart | ||
from dbt.tests.adapter.utils.test_string_literal import BaseStringLiteral | ||
|
||
|
||
class TestAnyValue(BaseAnyValue): | ||
pass | ||
|
||
|
||
class TestBoolOr(BaseBoolOr): | ||
pass | ||
|
||
|
||
class TestCastBoolToText(BaseCastBoolToText): | ||
pass | ||
|
||
|
||
class TestConcat(BaseConcat): | ||
pass | ||
|
||
|
||
class TestDateAdd(BaseDateAdd): | ||
pass | ||
|
||
|
||
class TestDateDiff(BaseDateDiff): | ||
pass | ||
|
||
|
||
class TestDateTrunc(BaseDateTrunc): | ||
pass | ||
|
||
|
||
class TestEscapeSingleQuotes(BaseEscapeSingleQuotesBackslash): | ||
pass | ||
|
||
|
||
class TestExcept(BaseExcept): | ||
pass | ||
|
||
|
||
class TestHash(BaseHash): | ||
pass | ||
|
||
|
||
class TestIntersect(BaseIntersect): | ||
pass | ||
|
||
|
||
class TestLastDay(BaseLastDay): | ||
pass | ||
|
||
|
||
class TestLength(BaseLength): | ||
pass | ||
|
||
|
||
class TestListagg(BaseListagg): | ||
pass | ||
|
||
|
||
class TestPosition(BasePosition): | ||
pass | ||
|
||
|
||
class TestReplace(BaseReplace): | ||
pass | ||
|
||
|
||
class TestRight(BaseRight): | ||
pass | ||
|
||
|
||
class TestSafeCast(BaseSafeCast): | ||
pass | ||
|
||
|
||
class TestSplitPart(BaseSplitPart): | ||
pass | ||
|
||
|
||
class TestStringLiteral(BaseStringLiteral): | ||
pass |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
last step before we're good to go!
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.
A-okay and good to go 👍