fivetran / dbt_hubspot_source

Data models for Hubspot built using dbt.
https://fivetran.github.io/dbt_hubspot_source/
Apache License 2.0
31 stars 30 forks source link

Loop twice #114

Closed greg-finley closed 11 months ago

greg-finley commented 11 months ago

Else you end up with MEETING_OUTCOME etc. in there twice, since the first iteration doesn't know to exclude it yet as a dupe.

If I put logging in your original code:

 {%- do duplicate_exclude.append(dupe.name) -%}
        , coalesce({{ col.name }}, {{dupe.name}}) as {{ col.name[prefix|length:] }}
        {%- endfor %}
        {{print(duplicate_exclude)}}
        {{print(col.name)}}
        {%- if col.name|lower not in duplicate_exclude|lower -%}
        {% if col.name[:prefix|length]|lower == prefix %}

MEETING_OUTCOME isn't in your duplicate_exclude yet and thus is added twice.

[]
BODY
[]
START_TIME
[]
END_TIME
[]
TITLE
[]
EXTERNAL_URL
[]
SOURCE
[]
CREATED_FROM_LINK_ID
[]
SOURCE_ID
[]
WEB_CONFERENCE_MEETING_ID
[]
MEETING_OUTCOME
[]
PRE_MEETING_PROSPECT_REMINDERS
[]
I_CAL_UID
[]
INTERNAL_MEETING_NOTES
[]
LOCATION
[]
ATTENDEE_OWNER_IDS
[]
MEETING_CHANGE_ID
[]
CALENDAR_EVENT_HASH
[]
PROPERTY_HS_ENGAGEMENT_SOURCE_ID
[]
PROPERTY_HS_LASTMODIFIEDDATE
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME']
PROPERTY_HS_OUTCOME_COMPLETED_COUNT
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME']
PROPERTY_HS_OUTCOME_SCHEDULED_COUNT
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME']
PROPERTY_HS_MEETING_START_TIME
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME']
PROPERTY_HS_OUTCOME_NO_SHOW_COUNT
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_OBJECT_SOURCE
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_CONTACT_FIRST_OUTREACH_DATE
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_UNIQUE_ID
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_BODY_PREVIEW_HTML
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_MEETING_END_TIME
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_MEETING_SOURCE
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_USER_IDS_OF_ALL_OWNERS
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID']
PROPERTY_HS_MODIFIED_BY
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_MEETING_EXTERNAL_URL
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_ALL_ACCESSIBLE_TEAM_IDS
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_MEETING_LOCATION
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_BODY_PREVIEW_IS_TRUNCATED
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_OUTCOME_CANCELED_COUNT
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_MEETING_TITLE
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_MEETING_SOURCE_ID
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES']
PROPERTY_HS_MEETING_CREATED_FROM_LINK_ID
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_UPDATED_BY_USER_ID
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_CREATED_BY_USER_ID
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_ENGAGEMENT_SOURCE
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_MEETING_BODY
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_BODY_PREVIEW
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_OUTCOME_RESCHEDULED_COUNT
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HUBSPOT_OWNER_ASSIGNEDDATE
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_GDPR_DELETED
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_MEETING_CALENDAR_EVENT_HASH
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_TIME_TO_BOOK_MEETING_FROM_FIRST_CONTACT
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_AT_MENTIONED_OWNER_IDS
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_OBJECT_SOURCE_ID
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_ALL_TEAM_IDS
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_CREATED_BY
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_OBJECT_ID
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']
PROPERTY_HS_ALL_OWNER_IDS
['PROPERTY_HS_MEETING_OUTCOME', 'MEETING_OUTCOME', 'PROPERTY_HS_MEETING_CHANGE_ID', 'MEETING_CHANGE_ID', 'PROPERTY_HS_INTERNAL_MEETING_NOTES', 'INTERNAL_MEETING_NOTES', 'PROPERTY_HS_ATTENDEE_OWNER_IDS', 'ATTENDEE_OWNER_IDS']