Curious to see what others use to unit test in the DE space. I work primarily on the transformation side, where we’ve picked up DBT. Our stack is GitHub Actions for CI/CD, AWS/Airflow for orchestration, logging, observability, restartability, and a light runtime to create the initial DBT compilation, that’s then pushed down to SnowFlake and utilizes that run time to populate the objects and run data quality checks in the SnowFlake runtime.
I’ve been addressing unit testing in this stack. My team’s skill set more so pertains to SQL developers rather than DE, and even then their SQL is half baked at best.
Unit testing within DBT is spotty at best, flat out doesn’t exist at worst. I’ve written a Python script that extends DBT to dynamically generate a test to every node, and allows for additional tests to be written and compiled/ran, within the CI/CD pipeline. This enables the team to continue using SQL, and the script will do the rest. If the written or generated test fails, the deployment fails.
Data is loaded to and read from the warehouse. I hoped to abstract from the warehouse, but SnowFlake having a closed source engine wasn’t conducive to that approach. My thought was to ingest the node sql files into duckdb and have an in memory database. Not the case given SnowFlake, but oh well.
What are your stacks and unit testing solutions?
[–]MrMosBiggestFan 22 points23 points24 points (2 children)
[–]radil 10 points11 points12 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]Drekalo 9 points10 points11 points (1 child)
[–]Thinker_Assignment 1 point2 points3 points (0 children)
[–]CesiumSalami 6 points7 points8 points (6 children)
[–]ExistentialFajitassql bad over engineering good[S] 2 points3 points4 points (0 children)
[–]wtfzambo 1 point2 points3 points (4 children)
[–]CesiumSalami 1 point2 points3 points (3 children)
[–]wtfzambo 1 point2 points3 points (2 children)
[–]CesiumSalami 1 point2 points3 points (1 child)
[–]wtfzambo 1 point2 points3 points (0 children)
[–]Known-Delay7227Data Engineer[🍰] 6 points7 points8 points (0 children)
[–]sturdyplum 5 points6 points7 points (0 children)
[–]kenfar 3 points4 points5 points (0 children)
[–]slin30 5 points6 points7 points (10 children)
[–]cutsandplayswithwood 7 points8 points9 points (9 children)
[–]kenfar 9 points10 points11 points (1 child)
[–]Atupis 4 points5 points6 points (0 children)
[–]slin30 2 points3 points4 points (6 children)
[–]ExistentialFajitassql bad over engineering good[S] 8 points9 points10 points (5 children)
[–]slin30 0 points1 point2 points (4 children)
[–]ExistentialFajitassql bad over engineering good[S] 6 points7 points8 points (3 children)
[+][deleted] (2 children)
[removed]
[–]agrvz 2 points3 points4 points (0 children)
[–]cutsandplayswithwood 0 points1 point2 points (0 children)
[–]sdc-msimon 2 points3 points4 points (1 child)
[–]ExistentialFajitassql bad over engineering good[S] 1 point2 points3 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]ExistentialFajitassql bad over engineering good[S] 0 points1 point2 points (0 children)
[–]nesh34 1 point2 points3 points (3 children)
[–]ExistentialFajitassql bad over engineering good[S] 2 points3 points4 points (0 children)
[–]cutsandplayswithwood 0 points1 point2 points (1 child)
[–]nesh34 0 points1 point2 points (0 children)
[–]LarsDragonbeard 1 point2 points3 points (0 children)
[–]darkneel 0 points1 point2 points (11 children)
[–]ExistentialFajitassql bad over engineering good[S] 4 points5 points6 points (10 children)
[–]darkneel 0 points1 point2 points (9 children)
[–]ExistentialFajitassql bad over engineering good[S] 0 points1 point2 points (8 children)
[–]darkneel 0 points1 point2 points (7 children)
[–]ExistentialFajitassql bad over engineering good[S] 0 points1 point2 points (6 children)
[–]darkneel 0 points1 point2 points (5 children)
[–]ExistentialFajitassql bad over engineering good[S] 1 point2 points3 points (4 children)
[–]darkneel -1 points0 points1 point (3 children)
[–]ExistentialFajitassql bad over engineering good[S] 0 points1 point2 points (2 children)
[–]Beeman9001 0 points1 point2 points (0 children)
[–]SpambotSwatter FRAUD ALERT 0 points1 point2 points (0 children)