<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic useing dlt metadata as runtime parameter in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/useing-dlt-metadata-as-runtime-parameter/m-p/112832#M44348</link>
    <description>&lt;P&gt;i have started using DLT pipeline, and i have common code which is used by multiple DLT pipeline. now i need to read metadata information like &lt;STRONG&gt;name of the pipeline&lt;/STRONG&gt; and &lt;STRONG&gt;start time of the pipeline &lt;U&gt;during run time&lt;/U&gt;&lt;/STRONG&gt;, but since im using common code and pipeline names and start time will change for each pipeline, i need to get this information at runtime. how should i get it ?&lt;/P&gt;</description>
    <pubDate>Mon, 17 Mar 2025 17:20:22 GMT</pubDate>
    <dc:creator>Kabil</dc:creator>
    <dc:date>2025-03-17T17:20:22Z</dc:date>
    <item>
      <title>useing dlt metadata as runtime parameter</title>
      <link>https://community.databricks.com/t5/data-engineering/useing-dlt-metadata-as-runtime-parameter/m-p/112832#M44348</link>
      <description>&lt;P&gt;i have started using DLT pipeline, and i have common code which is used by multiple DLT pipeline. now i need to read metadata information like &lt;STRONG&gt;name of the pipeline&lt;/STRONG&gt; and &lt;STRONG&gt;start time of the pipeline &lt;U&gt;during run time&lt;/U&gt;&lt;/STRONG&gt;, but since im using common code and pipeline names and start time will change for each pipeline, i need to get this information at runtime. how should i get it ?&lt;/P&gt;</description>
      <pubDate>Mon, 17 Mar 2025 17:20:22 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/useing-dlt-metadata-as-runtime-parameter/m-p/112832#M44348</guid>
      <dc:creator>Kabil</dc:creator>
      <dc:date>2025-03-17T17:20:22Z</dc:date>
    </item>
    <item>
      <title>Re: useing dlt metadata as runtime parameter</title>
      <link>https://community.databricks.com/t5/data-engineering/useing-dlt-metadata-as-runtime-parameter/m-p/138142#M50874</link>
      <description>&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;To dynamically access metadata like the pipeline name and start time at runtime in your common code for Delta Live Tables (DLT) pipelines, you should leverage runtime context and built-in metadata features provided by the DLT or related orchestrators. This approach enables your shared code to retrieve values that change per pipeline execution, without hard-coding these properties.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Recommended Approach&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;For Databricks DLT pipelines, metadata such as pipeline name and start time are typically accessible from environment variables, context objects, or by querying the pipeline's configuration and run history through SDKs or pipeline APIs at runtime.​&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;If you use declarative or metadata-driven DLT setups (such as Lakeflow Declarative Pipelines via dlt-meta), you can centrally manage your pipeline metadata in configuration files (like YAML/JSON), which your code reads during execution.​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;How to Read Metadata at Runtime&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Pipeline Name:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;When creating the pipeline, the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;pipeline_name&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;argument is typically passed and can be accessed programmatically. If it is omitted, Databricks generates a name based on the current running script, which you can also retrieve via the pipeline API or configuration object.​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Start Time:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;The start time is available as part of the run metadata or in progress tracking objects (such as the result returned by pipeline&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;.run()&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;method, which includes load IDs with timestamps).​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;STRONG&gt;Common Code Integration:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Whether working in notebooks or Python modules, you can write a helper function or class to load pipeline context, fetching values such as&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;pipeline_name&lt;/CODE&gt;, start time, etc., from environmental context or via API calls, and pass them through your processing logic.​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Example&lt;/H2&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Here’s a Python-style pseudocode snippet of how you might retrieve pipeline metadata in common code:&lt;/P&gt;
&lt;DIV class="w-full md:max-w-[90vw]"&gt;
&lt;DIV class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded font-mono text-sm font-normal bg-subtler"&gt;
&lt;DIV class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end md:sticky md:top-[100px]"&gt;
&lt;DIV class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"&gt;
&lt;DIV class="border-subtlest ring-subtlest divide-subtlest bg-subtler"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="-mt-xl"&gt;
&lt;DIV&gt;
&lt;DIV class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-[3px] font-thin" data-testid="code-language-indicator"&gt;python&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;CODE&gt;&lt;SPAN class="token token"&gt;import&lt;/SPAN&gt; dlt

&lt;SPAN class="token token"&gt;def&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;get_pipeline_metadata&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;pipeline&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt;
    name &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; pipeline&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;pipeline_name  &lt;SPAN class="token token"&gt;# Or fetch from config/environment if applicable&lt;/SPAN&gt;
    start_time &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; pipeline&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;last_run&lt;SPAN class="token token punctuation"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;'start_time'&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;]&lt;/SPAN&gt;  &lt;SPAN class="token token"&gt;# If available; otherwise, fetch from API&lt;/SPAN&gt;
    &lt;SPAN class="token token"&gt;return&lt;/SPAN&gt; &lt;SPAN class="token token punctuation"&gt;{&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;"name"&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt; name&lt;SPAN class="token token punctuation"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;"start_time"&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;:&lt;/SPAN&gt; start_time&lt;SPAN class="token token punctuation"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="token token"&gt;# In your common code&lt;/SPAN&gt;
pipeline &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; dlt&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;pipeline&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
metadata &lt;SPAN class="token token operator"&gt;=&lt;/SPAN&gt; get_pipeline_metadata&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;pipeline&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="token token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation"&gt;f"Pipeline: &lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;{&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation"&gt;metadata&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation"&gt;'name'&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;]&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;}&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation"&gt; started at &lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;{&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation"&gt;metadata&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation"&gt;'start_time'&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;]&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation interpolation punctuation"&gt;}&lt;/SPAN&gt;&lt;SPAN class="token token string-interpolation"&gt;"&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;)&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;In advanced setups, you may need to parse runtime context or query the DLT APIs for current pipeline state and metadata if not directly attached to the pipeline instance.&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Notes&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Review the documentation or official SDK for your DLT implementation to confirm the exact runtime context or API calls for metadata, as interfaces can vary based on how pipelines are configured and started.​&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Centralizing metadata in configuration files (using dlt-meta or similar) makes it easier to manage and access these values across multiple pipelines and executions.​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;This approach ensures your common code remains generic, picking up the pipeline-specific metadata at runtime without hard-coded values, adapting dynamically for each pipeline execution.​&lt;/P&gt;</description>
      <pubDate>Fri, 07 Nov 2025 16:35:07 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/useing-dlt-metadata-as-runtime-parameter/m-p/138142#M50874</guid>
      <dc:creator>mark_ott</dc:creator>
      <dc:date>2025-11-07T16:35:07Z</dc:date>
    </item>
  </channel>
</rss>

