Add Replacement element for conditional value replacements #79
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I found myself in a scenario where I only wanted to replace column values if a condition was met (e.g. replace email column value only if domain is not 'example.com').
So I hacked together a Replacement element that you can use as child of a Column element. Example:
For testing the column value against a condition, the "strategy" and "constraint" attributes are available. In the example below, columns with value "baby yoda" would be replaced by "grogu":
At the moment, 3 comparison strategies are defined: "eq" (equals), "neq" (not equals), and "regex".
A Column can have many Replacement elements. The first one where the column value matches the constraint defines the replacement value. In the example below, "pattern" would be replaced by "A", "something" by "B" and all other values by "fallback".
A Column with "replacement" attribute still works like it used to and it overrides any Replacement elements.
I am not sure about the API (Replacement elements with strategy and constraint attributes) nor if more people will find this useful, but it did the trick for me and I decided to share it here. Please let me know what you think.
Best.