From 580791433289742151520fd07c83178650735999 Mon Sep 17 00:00:00 2001 From: "Tim B." Date: Tue, 9 Jun 2026 14:54:29 +0200 Subject: [PATCH 1/2] natural logarithm support --- macros/math/log_natural.sql | 6 ++++++ 1 file changed, 6 insertions(+) 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 -%} From 234e8cc9f5b61dc77a3924c52ee61c54614f9b20 Mon Sep 17 00:00:00 2001 From: "Tim B." Date: Tue, 9 Jun 2026 14:55:28 +0200 Subject: [PATCH 2/2] Work with 0 1 bits --- .../_generalized/_truth_expression.sql | 4 ++ .../_generalized/expression_is_true.sql | 39 +++++++++++++++++++ 2 files changed, 43 insertions(+) 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 -%}