diff --git a/macros/math/log_natural.sql b/macros/math/log_natural.sql index fea06ff..38a5f4f 100644 --- a/macros/math/log_natural.sql +++ b/macros/math/log_natural.sql @@ -25,3 +25,9 @@ ln({{ x }}) {%- endmacro -%} + +{% macro sqlserver__log_natural(x) -%} + + log({{ x }}) + +{%- endmacro -%} diff --git a/macros/schema_tests/_generalized/_truth_expression.sql b/macros/schema_tests/_generalized/_truth_expression.sql index 94be171..de33551 100644 --- a/macros/schema_tests/_generalized/_truth_expression.sql +++ b/macros/schema_tests/_generalized/_truth_expression.sql @@ -6,3 +6,7 @@ {% macro default__truth_expression(expression) %} {{ expression }} as expression {% endmacro %} + +{% macro sqlserver__truth_expression(expression) %} + case when {{ expression }} then 1 else 0 end as expression +{% endmacro %} diff --git a/macros/schema_tests/_generalized/expression_is_true.sql b/macros/schema_tests/_generalized/expression_is_true.sql index c21cda8..049b707 100644 --- a/macros/schema_tests/_generalized/expression_is_true.sql +++ b/macros/schema_tests/_generalized/expression_is_true.sql @@ -55,4 +55,43 @@ select * from validation_errors +{% endmacro -%} + +{% macro sqlserver__expression_is_true(model, expression, test_condition, group_by_columns, row_condition) -%} +with grouped_expression as ( + select + {% if group_by_columns %} + {% for group_by_column in group_by_columns -%} + {{ group_by_column }} as col_{{ loop.index }}, + {% endfor -%} + {% endif %} + {{ dbt_expectations.truth_expression(expression) }} + from {{ model }} + {%- if row_condition %} + where + {{ row_condition }} + {% endif %} + {% if group_by_columns %} + group by + {% for group_by_column in group_by_columns -%} + {{ group_by_column }}{% if not loop.last %},{% endif %} + {% endfor %} + {% endif %} + +), +validation_errors as ( + + select + * + from + grouped_expression + where + not(expression =1) + +) + +select * +from validation_errors + + {% endmacro -%}