{"id":6868,"date":"2026-03-25T12:42:31","date_gmt":"2026-03-25T11:42:31","guid":{"rendered":"https:\/\/understandingdata.eu\/?p=6868"},"modified":"2026-03-25T14:04:41","modified_gmt":"2026-03-25T13:04:41","slug":"dry-data-documentation-by-using-dbt-doc-blocks","status":"publish","type":"post","link":"https:\/\/understandingdata.eu\/nl\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/","title":{"rendered":"DRY data documentation met dbt doc blocks"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"6868\" class=\"elementor elementor-6868\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-98b20a1 e-con-full e-flex e-con e-parent\" data-id=\"98b20a1\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-391b2655 e-flex e-con-boxed e-con e-child\" data-id=\"391b2655\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-142130df e-con-full e-flex e-con e-child\" data-id=\"142130df\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69ed657d elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"69ed657d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">DRY data documentation by using dbt Doc Blocks<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd94db2 elementor-author-box--name-yes elementor-author-box--link-no elementor-widget elementor-widget-author-box\" data-id=\"bd94db2\" data-element_type=\"widget\" data-widget_type=\"author-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-author-box\">\n\t\t\t\n\t\t\t<div class=\"elementor-author-box__text\">\n\t\t\t\t\t\t\t\t\t<div >\n\t\t\t\t\t\t<h4 class=\"elementor-author-box__name\">\n\t\t\t\t\t\t\tSander Jordens\t\t\t\t\t\t<\/h4>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e9efe76 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"2e9efe76\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"700\" height=\"350\" src=\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png\" class=\"attachment-full size-full wp-image-6880\" alt=\"data documentation by using dbt Doc Blocks\" srcset=\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png 700w, https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation-300x150.png 300w, https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation-18x9.png 18w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6c4ee367 e-flex e-con-boxed e-con e-child\" data-id=\"6c4ee367\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-7ee83b98 e-con-full e-flex e-con e-child\" data-id=\"7ee83b98\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-763efb7 elementor-widget elementor-widget-text-editor\" data-id=\"763efb7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Using dbt doc blocks enables DRY (Don&#8217;t Repeat Yourself) documentation by defining field descriptions in central Markdown files, improving consistency and maintainability as projects scale. This approach prevents the need to redefine fields in multiple YAML files, allowing updates to be reflected instantly across all downstream models.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f198574 elementor-widget elementor-widget-heading\" data-id=\"f198574\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">The Hidden Cost of Poor Documentation<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5f54ea1 elementor-widget elementor-widget-text-editor\" data-id=\"5f54ea1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Documentation is often one of the most overlooked aspects of data work. We build pipelines, structure our models, and deliver dashboards. The people already involved understand what is happening, but what happens when someone new joins?<br \/>Without clear documentation, it becomes difficult for them to make sense of anything.<br \/>With the rise of AI, this problem is only amplified. We increasingly expect to \u201ctalk\u201d to our data, but if that data lacks clear definitions, how can we expect accurate answers in return?<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5f3dfa0 elementor-widget elementor-widget-heading\" data-id=\"5f3dfa0\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Redefining the Same Fields<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-51304c5 elementor-widget elementor-widget-text-editor\" data-id=\"51304c5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>So how do we actually make data systems more structured and usable? In dbt one practical way of approaching this is using doc blocks.<br \/>In dbt, we use YAML files to define the fields of a table. It typically looks something like this:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a23a605 elementor-widget elementor-widget-code-highlight\" data-id=\"a23a605\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default  \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t<xmp>models\n  - name: stg_supabase__location\n    descrption: Staging model for the locations with source supabase\n    columns:\n        - name: location_id\n          description: Unique identifier for each location<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bcc8e40 elementor-widget elementor-widget-spacer\" data-id=\"bcc8e40\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7357b93 elementor-widget elementor-widget-text-editor\" data-id=\"7357b93\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p dir=\"auto\" data-pm-slice=\"1 1 []\">This works well for a single model. However, in practice, models often build on top of each other. As a result, you end up redefining the same fields, like IDs, over and over again in each model.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-992e97a elementor-widget elementor-widget-spacer\" data-id=\"992e97a\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-171d662 elementor-widget elementor-widget-image\" data-id=\"171d662\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"185\" src=\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/ID_documentation-1024x237.png\" class=\"attachment-large size-large wp-image-6873\" alt=\"Redefining the same fields like ID&#039;s\" srcset=\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/ID_documentation-1024x237.png 1024w, https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/ID_documentation-300x70.png 300w, https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/ID_documentation-768x178.png 768w, https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/ID_documentation-1536x356.png 1536w, https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/ID_documentation-18x4.png 18w, https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/ID_documentation.png 1670w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d294f6b elementor-widget elementor-widget-spacer\" data-id=\"d294f6b\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3846b2 elementor-widget elementor-widget-heading\" data-id=\"b3846b2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Introducing dbt Doc Blocks<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b9e01f elementor-widget elementor-widget-text-editor\" data-id=\"4b9e01f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>When using doc blocks, we define our fields in a Markdown file instead. This allows us to define each field once and let the Jinja templating engine populate the documentation wherever it is needed.<br \/>Example markdown file:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c4a5591 elementor-widget elementor-widget-code-highlight\" data-id=\"c4a5591\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default  \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t<xmp>{% docs location_id %} \nUnique identifier for each location\n{% enddocs %}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-35c001d elementor-widget elementor-widget-spacer\" data-id=\"35c001d\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dfe91a8 elementor-widget elementor-widget-text-editor\" data-id=\"dfe91a8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Example YAML file:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-26b03e0 elementor-widget elementor-widget-code-highlight\" data-id=\"26b03e0\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default  \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t<xmp>models\n  - name: stg_supabase__location\n    descrption: Staging model for the locations with source supabase\n    columns:\n        - name: location_id\n          description: {{doc('some_id')}}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-657f76d elementor-widget elementor-widget-spacer\" data-id=\"657f76d\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-734df27 elementor-widget elementor-widget-heading\" data-id=\"734df27\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Consistent, maintainable and AI-ready documentation<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9845504 elementor-widget elementor-widget-text-editor\" data-id=\"9845504\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p dir=\"auto\" data-pm-slice=\"1 1 [&quot;ordered_list&quot;,{&quot;order&quot;:1,&quot;listStyle&quot;:&quot;&quot;},&quot;list_item&quot;,{}]\">The main advantage of this approach is consistency. We maintain a single, clear definition for each field. If something changes, we update it in one place and that change is reflected everywhere.<\/p><p dir=\"auto\" data-pm-slice=\"1 1 [&quot;ordered_list&quot;,{&quot;order&quot;:1,&quot;listStyle&quot;:&quot;&quot;},&quot;list_item&quot;,{}]\">Beyond consistency, this also improves maintainability. As projects grow, duplicated definitions quickly become hard to manage and small differences start to appear.<\/p><p dir=\"auto\" data-pm-slice=\"1 1 [&quot;ordered_list&quot;,{&quot;order&quot;:1,&quot;listStyle&quot;:&quot;&quot;},&quot;list_item&quot;,{}]\">It also keeps your models cleaner by separating structure from documentation.<br \/>Most importantly, it makes your data more usable for AI. These systems rely on metadata to understand data. This means you need clear and consistent definitions to generate accurate answers. If your documentation is fragmented or inconsistent, the output will be too. Centralizing definitions helps ensure that both humans and AI are working with the same understanding.<\/p><p dir=\"auto\" data-pm-slice=\"1 1 [&quot;ordered_list&quot;,{&quot;order&quot;:1,&quot;listStyle&quot;:&quot;&quot;},&quot;list_item&quot;,{}]\">Would you like to learn more about AI-ready documentation or data governance in general? <a href=\"https:\/\/understandingdata.eu\/contact-data-experts\/\">Contact us now.<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-73d54c88 e-flex e-con-boxed e-con e-parent\" data-id=\"73d54c88\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3cdca50a elementor-widget elementor-widget-spacer\" data-id=\"3cdca50a\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dc60091 elementor-widget elementor-widget-heading\" data-id=\"3dc60091\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Ready to Design Your Data Future?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-13154e1a elementor-widget elementor-widget-spacer\" data-id=\"13154e1a\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-423fdf60 elementor-widget elementor-widget-heading\" data-id=\"423fdf60\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Let's Create Your Strategic Roadmap<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d1a8d3c elementor-widget elementor-widget-spacer\" data-id=\"5d1a8d3c\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a11d243 elementor-widget elementor-widget-text-editor\" data-id=\"6a11d243\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Do you want to make better use of your data and information? Contact us now, and learn how we can bring your organisation to the next level.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54a3e352 elementor-widget elementor-widget-spacer\" data-id=\"54a3e352\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-380f151a elementor-align-center elementor-widget elementor-widget-button\" data-id=\"380f151a\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/understandingdata.eu\/contact-data-experts\/business-project-inquiries\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Contact Us<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-50aea2b6 elementor-widget elementor-widget-spacer\" data-id=\"50aea2b6\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-415bdeb e-flex e-con-boxed e-con e-parent\" data-id=\"415bdeb\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Using dbt doc blocks enables DRY (Don&#8217;t Repeat Yourself) documentation by defining field descriptions in central Markdown files, improving consistency and maintainability as projects scale. This approach prevents the need to redefine fields in multiple YAML files, allowing updates to be reflected instantly across all downstream models. The Hidden Cost of Poor Documentation Documentation is [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":6880,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[17],"tags":[45,44,43],"class_list":["post-6868","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-ai-ready-data","tag-data-governance","tag-dbt"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DRY data documentation by using dbt Doc Blocks - Understanding Data<\/title>\n<meta name=\"description\" content=\"Stop repeating yourself in dbt. Learn how to use doc blocks to centralize your definitions and make your documentation AI-ready.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/understandingdata.eu\/nl\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/\" \/>\n<meta property=\"og:locale\" content=\"nl_BE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DRY data documentation by using dbt Doc Blocks - Understanding Data\" \/>\n<meta property=\"og:description\" content=\"Stop repeating yourself in dbt. Learn how to use doc blocks to centralize your definitions and make your documentation AI-ready.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/understandingdata.eu\/nl\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/\" \/>\n<meta property=\"og:site_name\" content=\"Understanding Data\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-25T11:42:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-25T13:04:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sander Jordens\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sander Jordens\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/\"},\"author\":{\"name\":\"Sander Jordens\",\"@id\":\"https:\/\/understandingdata.eu\/#\/schema\/person\/575424a81e08cb5a457e12415593f79e\"},\"headline\":\"DRY data documentation by using dbt Doc Blocks\",\"datePublished\":\"2026-03-25T11:42:31+00:00\",\"dateModified\":\"2026-03-25T13:04:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/\"},\"wordCount\":457,\"publisher\":{\"@id\":\"https:\/\/understandingdata.eu\/#organization\"},\"image\":{\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png\",\"keywords\":[\"AI-ready data\",\"data governance\",\"dbt\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"nl-BE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/\",\"url\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/\",\"name\":\"DRY data documentation by using dbt Doc Blocks - Understanding Data\",\"isPartOf\":{\"@id\":\"https:\/\/understandingdata.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png\",\"datePublished\":\"2026-03-25T11:42:31+00:00\",\"dateModified\":\"2026-03-25T13:04:41+00:00\",\"description\":\"Stop repeating yourself in dbt. Learn how to use doc blocks to centralize your definitions and make your documentation AI-ready.\",\"breadcrumb\":{\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#breadcrumb\"},\"inLanguage\":\"nl-BE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage\",\"url\":\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png\",\"contentUrl\":\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png\",\"width\":700,\"height\":350,\"caption\":\"data documentation by using dbt Doc Blocks\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/understandingdata.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DRY data documentation by using dbt Doc Blocks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/understandingdata.eu\/#website\",\"url\":\"https:\/\/understandingdata.eu\/\",\"name\":\"Understanding Data\",\"description\":\"Pioneering data solutions to empower society\",\"publisher\":{\"@id\":\"https:\/\/understandingdata.eu\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/understandingdata.eu\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-BE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/understandingdata.eu\/#organization\",\"name\":\"Understanding Data\",\"url\":\"https:\/\/understandingdata.eu\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\/\/understandingdata.eu\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2024\/05\/UDtext-logo-zwart-breed.svg\",\"contentUrl\":\"https:\/\/understandingdata.eu\/wp-content\/uploads\/2024\/05\/UDtext-logo-zwart-breed.svg\",\"width\":673,\"height\":149,\"caption\":\"Understanding Data\"},\"image\":{\"@id\":\"https:\/\/understandingdata.eu\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/floris-remmen\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/understandingdata.eu\/#\/schema\/person\/575424a81e08cb5a457e12415593f79e\",\"name\":\"Sander Jordens\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\/\/understandingdata.eu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/18c11349463212e2241980cf97baa9e7ce6e313f1ec97000b1ed2047f7d9db0b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/18c11349463212e2241980cf97baa9e7ce6e313f1ec97000b1ed2047f7d9db0b?s=96&d=mm&r=g\",\"caption\":\"Sander Jordens\"},\"url\":\"https:\/\/understandingdata.eu\/nl\/author\/sander-jordens\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DRY data documentation by using dbt Doc Blocks - Understanding Data","description":"Stop repeating yourself in dbt. Learn how to use doc blocks to centralize your definitions and make your documentation AI-ready.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/understandingdata.eu\/nl\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/","og_locale":"nl_BE","og_type":"article","og_title":"DRY data documentation by using dbt Doc Blocks - Understanding Data","og_description":"Stop repeating yourself in dbt. Learn how to use doc blocks to centralize your definitions and make your documentation AI-ready.","og_url":"https:\/\/understandingdata.eu\/nl\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/","og_site_name":"Understanding Data","article_published_time":"2026-03-25T11:42:31+00:00","article_modified_time":"2026-03-25T13:04:41+00:00","og_image":[{"width":700,"height":350,"url":"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png","type":"image\/png"}],"author":"Sander Jordens","twitter_card":"summary_large_image","twitter_misc":{"Geschreven door":"Sander Jordens","Geschatte leestijd":"3 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#article","isPartOf":{"@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/"},"author":{"name":"Sander Jordens","@id":"https:\/\/understandingdata.eu\/#\/schema\/person\/575424a81e08cb5a457e12415593f79e"},"headline":"DRY data documentation by using dbt Doc Blocks","datePublished":"2026-03-25T11:42:31+00:00","dateModified":"2026-03-25T13:04:41+00:00","mainEntityOfPage":{"@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/"},"wordCount":457,"publisher":{"@id":"https:\/\/understandingdata.eu\/#organization"},"image":{"@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage"},"thumbnailUrl":"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png","keywords":["AI-ready data","data governance","dbt"],"articleSection":["Blog"],"inLanguage":"nl-BE"},{"@type":"WebPage","@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/","url":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/","name":"DRY data documentation by using dbt Doc Blocks - Understanding Data","isPartOf":{"@id":"https:\/\/understandingdata.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage"},"image":{"@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage"},"thumbnailUrl":"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png","datePublished":"2026-03-25T11:42:31+00:00","dateModified":"2026-03-25T13:04:41+00:00","description":"Stop repeating yourself in dbt. Learn how to use doc blocks to centralize your definitions and make your documentation AI-ready.","breadcrumb":{"@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#breadcrumb"},"inLanguage":"nl-BE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/"]}]},{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#primaryimage","url":"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png","contentUrl":"https:\/\/understandingdata.eu\/wp-content\/uploads\/2026\/03\/Blog_Documentation.png","width":700,"height":350,"caption":"data documentation by using dbt Doc Blocks"},{"@type":"BreadcrumbList","@id":"https:\/\/understandingdata.eu\/blog\/dry-data-documentation-by-using-dbt-doc-blocks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/understandingdata.eu\/"},{"@type":"ListItem","position":2,"name":"DRY data documentation by using dbt Doc Blocks"}]},{"@type":"WebSite","@id":"https:\/\/understandingdata.eu\/#website","url":"https:\/\/understandingdata.eu\/","name":"Understanding Data","description":"Pioneering data solutions to empower society","publisher":{"@id":"https:\/\/understandingdata.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/understandingdata.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-BE"},{"@type":"Organization","@id":"https:\/\/understandingdata.eu\/#organization","name":"Understanding Data","url":"https:\/\/understandingdata.eu\/","logo":{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/understandingdata.eu\/#\/schema\/logo\/image\/","url":"https:\/\/understandingdata.eu\/wp-content\/uploads\/2024\/05\/UDtext-logo-zwart-breed.svg","contentUrl":"https:\/\/understandingdata.eu\/wp-content\/uploads\/2024\/05\/UDtext-logo-zwart-breed.svg","width":673,"height":149,"caption":"Understanding Data"},"image":{"@id":"https:\/\/understandingdata.eu\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/floris-remmen\/"]},{"@type":"Person","@id":"https:\/\/understandingdata.eu\/#\/schema\/person\/575424a81e08cb5a457e12415593f79e","name":"Sander Jordens","image":{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/understandingdata.eu\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/18c11349463212e2241980cf97baa9e7ce6e313f1ec97000b1ed2047f7d9db0b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/18c11349463212e2241980cf97baa9e7ce6e313f1ec97000b1ed2047f7d9db0b?s=96&d=mm&r=g","caption":"Sander Jordens"},"url":"https:\/\/understandingdata.eu\/nl\/author\/sander-jordens\/"}]}},"_links":{"self":[{"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/posts\/6868","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/comments?post=6868"}],"version-history":[{"count":28,"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/posts\/6868\/revisions"}],"predecessor-version":[{"id":6906,"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/posts\/6868\/revisions\/6906"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/media\/6880"}],"wp:attachment":[{"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/media?parent=6868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/categories?post=6868"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/understandingdata.eu\/nl\/wp-json\/wp\/v2\/tags?post=6868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}