Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
# dbt_qualtrics v1.2.1

[PR #26](https://github.com/fivetran/dbt_qualtrics/pull/26) includes the following updates:

## Bug Fix
- Fixes a Redshift error in `qualtrics__contact`, `qualtrics__survey`, and `qualtrics__distribution` where `percentile_cont` raised a "Non supported data-type in order-by expression" error. Redshift requires float values in `ORDER BY` expressions within `percentile_cont`. The following fields are now cast to float on Redshift before being passed to the percentile calculation:
- `qualtrics__contact` and `qualtrics__survey`: `duration_in_seconds`, `progress`
- `qualtrics__distribution`: `time_to_open_in_seconds`, `time_to_start_in_seconds`, `time_to_complete_in_seconds`

## Under the Hood
- Introduces the `qualtrics_percentile` macro to manage Redshift-specific percentile behavior. The macro dispatches to a Redshift implementation that applies the float cast, and delegates to `fivetran_utils.percentile` for all other warehouses.

# dbt_qualtrics v1.2.0

[PR #24](https://github.com/fivetran/dbt_qualtrics/pull/24) includes the following updates:
Expand Down
2 changes: 1 addition & 1 deletion dbt_project.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: 'qualtrics'
version: '1.2.0'
version: '1.2.1'
config-version: 2
require-dbt-version: [">=1.3.0", "<3.0.0"]

Expand Down
2 changes: 1 addition & 1 deletion docs/catalog.json

Large diffs are not rendered by default.

253 changes: 3 additions & 250 deletions docs/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/manifest.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion integration_tests/dbt_project.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: 'qualtrics_integration_tests'
version: '1.2.0'
version: '1.2.1'
profile: 'integration_tests'
config-version: 2

Expand Down
19 changes: 19 additions & 0 deletions macros/percentile.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{% macro qualtrics_percentile(percentile_field, partition_field, percent) -%}
{{ adapter.dispatch('qualtrics_percentile', 'qualtrics') (percentile_field, partition_field, percent) }}
{%- endmacro %}

-- Redshift requires the percentile_field to be cast as a float for percentile_cont to work correctly
{% macro redshift__qualtrics_percentile(percentile_field, partition_field, percent) %}

percentile_cont(
{{ percent }} )
within group ( order by cast({{ percentile_field }} as {{ dbt.type_float() }}) )
over ( partition by {{ partition_field }} )

{% endmacro %}

{% macro default__qualtrics_percentile(percentile_field, partition_field, percent) %}

{{ fivetran_utils.percentile(percentile_field, partition_field, percent) }}

{% endmacro %}
4 changes: 2 additions & 2 deletions models/qualtrics__contact.sql
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ calc_medians as (
select
contact_id,
source_relation,
{{ fivetran_utils.percentile(percentile_field='duration_in_seconds', partition_field='contact_id,source_relation', percent='0.5') }} as median_survey_duration_in_seconds,
{{ fivetran_utils.percentile(percentile_field='progress', partition_field='contact_id,source_relation', percent='0.5') }} as median_survey_progress_pct
{{ qualtrics_percentile(percentile_field='duration_in_seconds', partition_field='contact_id,source_relation', percent='0.5') }} as median_survey_duration_in_seconds,
{{ qualtrics_percentile(percentile_field='progress', partition_field='contact_id,source_relation', percent='0.5') }} as median_survey_progress_pct

from distribution_response
{% if target.type == 'postgres' %} group by 1,2 {% endif %} -- percentile macro uses an aggregate function on postgres and window functions on other DBs
Expand Down
6 changes: 3 additions & 3 deletions models/qualtrics__distribution.sql
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ calc_medians as (
select
distribution_id,
source_relation,
{{ fivetran_utils.percentile(percentile_field='time_to_open_in_seconds', partition_field='distribution_id,source_relation', percent='0.5') }} as median_time_to_open_in_seconds,
{{ fivetran_utils.percentile(percentile_field='time_to_start_in_seconds', partition_field='distribution_id,source_relation', percent='0.5') }} as median_time_to_start_in_seconds,
{{ fivetran_utils.percentile(percentile_field='time_to_complete_in_seconds', partition_field='distribution_id,source_relation', percent='0.5') }} as median_time_to_complete_in_seconds
{{ qualtrics_percentile(percentile_field='time_to_open_in_seconds', partition_field='distribution_id,source_relation', percent='0.5') }} as median_time_to_open_in_seconds,
{{ qualtrics_percentile(percentile_field='time_to_start_in_seconds', partition_field='distribution_id,source_relation', percent='0.5') }} as median_time_to_start_in_seconds,
{{ qualtrics_percentile(percentile_field='time_to_complete_in_seconds', partition_field='distribution_id,source_relation', percent='0.5') }} as median_time_to_complete_in_seconds

from distribution_contact
{% if target.type == 'postgres' %} group by 1,2 {% endif %} -- percentile macro uses an aggregate function on postgres and window functions on other DBs
Expand Down
4 changes: 2 additions & 2 deletions models/qualtrics__survey.sql
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ calc_medians as (
select
survey_id,
source_relation,
{{ fivetran_utils.percentile(percentile_field='duration_in_seconds', partition_field='survey_id,source_relation', percent='0.5') }} as median_response_duration_in_seconds,
{{ fivetran_utils.percentile(percentile_field='progress', partition_field='survey_id,source_relation', percent='0.5') }} as median_survey_progress_pct
{{ qualtrics_percentile(percentile_field='duration_in_seconds', partition_field='survey_id,source_relation', percent='0.5') }} as median_response_duration_in_seconds,
{{ qualtrics_percentile(percentile_field='progress', partition_field='survey_id,source_relation', percent='0.5') }} as median_survey_progress_pct

from responses
{% if target.type == 'postgres' %} group by 1,2 {% endif %} -- percentile macro uses an aggregate function on postgres and window functions on other DBs
Expand Down
Loading