Hi I’m noticing that the `exclude` clause doesn’t ...
# troubleshooting
m
Hi I’m noticing that the
exclude
clause doesn’t seem to be working for
tap-salesforce
. For example:
Copy code
select:
- Task.*
exclude:
- Task.description
Doesn’t exclude
Task.description
. Interestingly, the “exclusion pattern” in the
select
clause does work:
Copy code
select:
- Task.*
- '!Task.Description
Does work…kinda. It just
nulls
the column, instead of excluding it. Not sure if I’m missing something obvious or not
a
Hi, @matt_cooley - You've actually stumbled on a common troubleshooting point. Not all taps filter the SCHEMA messages they send to the target, which means the target will often create columns for those even if the data itself (sent in RECORD messages) are being correctly filtered. SDK-based taps will always filter both RECORD and SCHEMA messages, but others may or may not, depending on the implementation.
m
Ok, cool. Does that mean that
select: !Task.Description
filters the records and
exclude: Task.Description
filters the schema, but the tap I’m using doesn’t respect schema filters?
a
Unfortunately, no,
exclude
and
select
in this context both are meltano-implementation that feed into the
selection
feature in the catalog. If the tap doesn't filter the schema messages as part of that, there's not much we can do about it.
You could try overriding the catalog itself, using the schema extra, but I wouldn't recommend that approach if you can deal with the extra (empty) column.
In a past life, I put a dbt test in place to ensure the column was always null. It's kind of a pain, but it at least gave the assurance that we wouldn't accidentally start importing that data some time in the future.
m
Hmmm…what’s weird is that the
select: !Task.Description
works, it doesn’t EL the data (though it does add the column).
exclude: Task.Description
doesn’t work at all. That’s why I was making that assumption.
a
I don't know the reason why the exclude wouldn't work, but the other stuff makes sense.
When we add stream maps (aka inline transformations) support for non-SDK taps in Meltano, then users will be able to just nullify a stream's property entirely (schema and data), regardless of whether the tap fully handles the exclusion or not.