Closed greg-finley closed 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.
MEETING_OUTCOME
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.
duplicate_exclude
[] 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']
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:
MEETING_OUTCOME
isn't in yourduplicate_exclude
yet and thus is added twice.