{"repo":"dbt-labs/dbt-extractor","free":true,"listed":false,"github":"https://github.com/dbt-labs/dbt-extractor","clone":"git clone https://github.com/dbt-labs/dbt-extractor.git","description":null,"language":"Rust","stars":33,"topics":["parser","jinja2","dbt"],"license":"Apache-2.0","category":"data-pipelines","readme_excerpt":"dbt extractor Understanding dbt-extractor This repository contains a tool that processes the most common jinja value templates in dbt model files. The tool depends on tree-sitter and the tree-sitter-jinja2 library. Getting started - Read the introduction and viewpoint of dbt Strategy The current strategy is for this processor to be 100% certain when it can accurately extract values from a given model file. Anything less than 100% certainty returns an exception so that the model can be rendered with python Jinja instead. There are two cases we want to avoid because they would risk correctness to user's projects: 1. Confidently extracting values that would not be extracted by python jinja (false positives) 2. Confidently extracting a set of values that are missing values that python jinja would have extracted. (misses) If we instead error when we could have confidently extracted values, there is no correctness risk to the user. Only an opportunity to expand the rules to encompass this class of cases as well. Even though jinja in dbt is not a typed language, the type checker statically determines whether or not the current implementation can confidently extract values without relying on python jinja rendering, which is when these errors would otherwise surface. This type checker will become more permissive over time as this tool expands to include more dbt and jinja features. Architecture This architecture is optimized for value extraction and for future flexibility. This archit","default_branch":null,"files":null,"tree":[],"storefront":"/r/dbt-labs","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/dbt-labs/dbt-extractor/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}