Hi all, I’m doing some planning for next year and ...
# singer-target-development
n
Hi all, I’m doing some planning for next year and one of the major tasks on our radar is to better use the data in our warehouse in downstream places (CRM, ESP, etc.). This is the typical “reverse ETL” use case (though I know this channel doesn’t love that term - neither do I). Since we’re currently using Meltano for ingestion into the warehouse, it’d be nice to use it for publishing elsewhere, and I’m curious what you all might recommend on that front, either now or in the future based on planned roadmap elements. More specifics of what I’m imagining in thread.
There are probably a few ways we might approach this. One would be to implement a SaaS tool like Census or Hightouch. Outsourcing the work here is nice, but there’s both a financial and “another tool to deal with” cost here.
Another would be to use singer targets to move data from the warehouse to other places post-transformation. I assume this would require specific targets to exist for each of the places we’d want to load data. Some of them (e.g. mysql, salesforce) I could imagine being broadly useful enough that a community supported target might exist or could be created/sustained, but it doesn’t appear that any of these do at the moment
A third path that I vaguely remember appearing on a meltano roadmap at one point (I think) might involve a more generic “target_saas_thing” way of piping data from a warehouse out to various saas APIs. Poking though slack history and git, I’m not sure if there’s still plans for meltano to move in this direction though.
I’d love to hear from anyone who has thoughts about what might make sense here in light of where Meltano’s headed or folks who’ve gone through similar processes themselves (I’m sure I’m not the only one). Thanks in advance!
v
Slightly clearer picture, basically explains what I'm doing. Left = Singer Sources Right I point to Singer Targets Using meltano of course 🙂
t
@nick_hamlin I’d say the big challenge for using Meltano for operationalizing data (Reverse ELT) is the existence of taps and targets for your use case. Paths 2 and 3 I think are the same from our perspective. Meltano and Singer would work very well for it. Some new functionality coming out very soon would make it easy to coordinate ELTEL type workflows as well (check out some of the meltano run work). @aaronsteers can you chime in on where the SDK is for SaaS targets?
n
@taylor yep, totally agree - I’d much prefer not to add another tool to the stack, but also recognize that having the right targets (both existing and maintained) is a major barrier to entry for options 2/3
t
@nick_hamlin a solution to that if you have budget would be to look at some of our consulting partners (shoutout to @visch) to help build those. I think you’d see a lot of interest from folks around this in the community 🙂
Also, Grouparoo could be an interesting option for you as well if there is overlap with the targets.
n
Thanks, those both seem like solid options too!
p
@nick_hamlin I previously used Singer for pushing data from snowflake to various other saas tools (Salesforce, Salesforce Marketing, Delighted, Amplitude, etc.). None of those targets were open sourced by my previous employer but we were able to get new targets up and running pretty quick using the SDK, its generally less complicated than taps since theres not really any pagination or bookmarking to do. Another Meltano feature that makes this way easier (which I wish we had back when I was doing this) is the stream maps which helps you rename and map tap streams to targets entities. Before this it was difficult to not put transformation logic in the targets or have to make a new snowflake view for every dataset to rename fields. I'm happy to share more details about my experience if you have questions - hope thats helpful
n
Thanks Pat, glad to hear that that’s a viable path as well!
a
I came here to add my comments but looks like @pat_nadolny and @taylor have got it covered. 🎉 I like "ELTP" as the acronym for an ELT pipeline with a final "publish" step but yes, as @pat_nadolny mentions: you can certainly use Singer for that if there's a target that matches the SaaS you want to land data into. The dev experience for creating a SaaS target primarily revolves around overriding RecordSink.process_record() for SaaS's that prefer singleton writes or BatchSink.process_batch() for SaaS targets are more efficient in batch.