<?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 Re: StructField Metadata Dictionary - What are the possible keys? in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/96145#M39224</link>
    <description>&lt;P&gt;Hey&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/99826"&gt;@Panda&lt;/a&gt;&amp;nbsp;,&lt;BR /&gt;&lt;BR /&gt;That will work but when you want to do this for each of the columns in your table it becomes very unclean in comparison to using something like the StructField Metadata attribute.&lt;BR /&gt;&lt;BR /&gt;At the moment you would end up doing somethings like:&lt;/P&gt;&lt;LI-CODE lang="python"&gt;    def _create_tags_script(self, column_name, field_name, value):
        return f"ALTER COLUMN {column_name} SET TAGS ('{field_name}' = '{value}')"

    def get_sql_script(self, catalog_name, schema_name, table_name):
        alter_table_script = f"ALTER TABLE {catalog_name}.{schema_name}.{table_name}"
        output_sql_script = []
        for schema_field in self.schema_fields:
            if schema_field.source_field:
                output_sql_script.append(
                    f"{alter_table_script} {self._create_tags_script(schema_field.column_name, 'source_field', schema_field.source_field)}"
                )
            if schema_field.legacy_field:
                output_sql_script.append(
                    f"{alter_table_script} {self._create_tags_script(schema_field.column_name, 'legacy_field', schema_field.legacy_field)}"
                )
            if schema_field.comment:
                output_sql_script.append(
                    f"{alter_table_script} ALTER COLUMN {schema_field.column_name} COMMENT '{schema_field.comment}'"
                )
        return output_sql_script&lt;/LI-CODE&gt;&lt;P&gt;which is just a bit more messy than&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;StructType(
[
StructField(
    "columnName1",
    StringType(),
    True,
    metadata = {
        'comment': "This is a comment"
    }
),
StructField(
    "columnName2",
    StringType(),
    True,
    metadata = {
        'comment': "This is a comment"
    }
),
StructField(
    "columnName3",
    StringType(),
    True,
    metadata = {
        'comment': "This is a comment"
    }
)
]
)&lt;/LI-CODE&gt;</description>
    <pubDate>Fri, 25 Oct 2024 14:18:47 GMT</pubDate>
    <dc:creator>ChrisLawford_n1</dc:creator>
    <dc:date>2024-10-25T14:18:47Z</dc:date>
    <item>
      <title>StructField Metadata Dictionary - What are the possible keys?</title>
      <link>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/75196#M34891</link>
      <description>&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I have a Delta Live Table which is being deposited to Unity Catalog. In the Python notebook, I am defining the schema with a series of StructFields, for example:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;StructField&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; "columnName"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; StringType&lt;/SPAN&gt;&lt;SPAN&gt;(), &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; True&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; metadata = {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'comment'&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"This is a comment"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;This works, however now I am trying to add tags, I have tried the following, but it doesn't seem to work:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;metadata = {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'comment'&lt;/SPAN&gt;&lt;SPAN&gt;: &lt;/SPAN&gt;&lt;SPAN&gt;"This is a comment"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'tags': {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'tag1': 'x',&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'tag2': 'y',&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Does anyone know to add tags to columns programmatically using the Python API?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;Also, does anyone know how to add tags to the specific table, I am using&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dlt.&lt;/SPAN&gt;&lt;SPAN&gt;create_streaming_table&lt;/SPAN&gt;&lt;SPAN&gt;(), but there doesn't seem to be an option here:&amp;nbsp;&lt;A href="https://docs.databricks.com/en/delta-live-tables/python-ref.html" target="_blank"&gt;Delta Live Tables Python language reference | Databricks on AWS&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Any help would be greatly appreciated!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Riqo&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 20 Jun 2024 12:40:40 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/75196#M34891</guid>
      <dc:creator>chaosBEE</dc:creator>
      <dc:date>2024-06-20T12:40:40Z</dc:date>
    </item>
    <item>
      <title>Re: StructField Metadata Dictionary - What are the possible keys?</title>
      <link>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/75313#M34926</link>
      <description>&lt;P&gt;Thank you Kaniz!&lt;BR /&gt;&lt;BR /&gt;A few follow-up questions:&lt;BR /&gt;&lt;BR /&gt;Could you give an example of each?&lt;BR /&gt;&lt;BR /&gt;For 1. you said "&lt;SPAN&gt;define your schema with metadata", how do you this, what is the syntax for defining metadata with tags, like I said before, the following does not work:&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;StructField&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; "columnName"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; StringType&lt;/SPAN&gt;&lt;SPAN&gt;(),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; True&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; metadata = {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'comment'&lt;/SPAN&gt;&lt;SPAN&gt;:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"This is a comment",&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'tags': {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'tag1': 'x',&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'tag2': 'y',&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;For 2., again, what is the syntax? Could you provide an example? In the link you have shown, there doesn't seem to be a tags option as shown below. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/97035"&gt;@Dlt&lt;/a&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;table&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt; &lt;SPAN class=""&gt;name&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&amp;lt;name&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;comment&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&amp;lt;comment&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;spark_conf&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&amp;lt;key&amp;gt;"&lt;/SPAN&gt; &lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;value&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;key&amp;gt;"&lt;/SPAN&gt; &lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;value&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;},&lt;/SPAN&gt; &lt;SPAN class=""&gt;table_properties&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&amp;lt;key&amp;gt;"&lt;/SPAN&gt; &lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;value&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;key&amp;gt;"&lt;/SPAN&gt; &lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;value&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;},&lt;/SPAN&gt; &lt;SPAN class=""&gt;path&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&amp;lt;storage-location-path&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;partition_cols&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&amp;lt;partition-column&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;partition-column&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;],&lt;/SPAN&gt; &lt;SPAN class=""&gt;schema&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;"schema-definition"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;temporary&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt;False&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;Also, is this available with&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/97035"&gt;@Dlt&lt;/a&gt;.append_flow too?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;Thanks&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 21 Jun 2024 09:53:11 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/75313#M34926</guid>
      <dc:creator>chaosBEE</dc:creator>
      <dc:date>2024-06-21T09:53:11Z</dc:date>
    </item>
    <item>
      <title>Re: StructField Metadata Dictionary - What are the possible keys?</title>
      <link>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/96110#M39218</link>
      <description>&lt;P&gt;Did you ever get an answer to this ?&lt;/P&gt;</description>
      <pubDate>Fri, 25 Oct 2024 09:52:47 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/96110#M39218</guid>
      <dc:creator>ChrisLawford_n1</dc:creator>
      <dc:date>2024-10-25T09:52:47Z</dc:date>
    </item>
    <item>
      <title>Re: StructField Metadata Dictionary - What are the possible keys?</title>
      <link>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/96142#M39223</link>
      <description>&lt;P&gt;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/109086"&gt;@chaosBEE&lt;/a&gt;&amp;nbsp;Have you try the below&lt;/P&gt;&lt;P&gt;Use following SQL command to add tags programmatically&lt;/P&gt;&lt;LI-CODE lang="python"&gt;spark.sql("""ALTER TABLE your_catalog.your_schema.your_table SET TAGS ('key1' = 'value1');""")&lt;/LI-CODE&gt;</description>
      <pubDate>Fri, 25 Oct 2024 13:38:51 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/96142#M39223</guid>
      <dc:creator>Panda</dc:creator>
      <dc:date>2024-10-25T13:38:51Z</dc:date>
    </item>
    <item>
      <title>Re: StructField Metadata Dictionary - What are the possible keys?</title>
      <link>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/96145#M39224</link>
      <description>&lt;P&gt;Hey&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/99826"&gt;@Panda&lt;/a&gt;&amp;nbsp;,&lt;BR /&gt;&lt;BR /&gt;That will work but when you want to do this for each of the columns in your table it becomes very unclean in comparison to using something like the StructField Metadata attribute.&lt;BR /&gt;&lt;BR /&gt;At the moment you would end up doing somethings like:&lt;/P&gt;&lt;LI-CODE lang="python"&gt;    def _create_tags_script(self, column_name, field_name, value):
        return f"ALTER COLUMN {column_name} SET TAGS ('{field_name}' = '{value}')"

    def get_sql_script(self, catalog_name, schema_name, table_name):
        alter_table_script = f"ALTER TABLE {catalog_name}.{schema_name}.{table_name}"
        output_sql_script = []
        for schema_field in self.schema_fields:
            if schema_field.source_field:
                output_sql_script.append(
                    f"{alter_table_script} {self._create_tags_script(schema_field.column_name, 'source_field', schema_field.source_field)}"
                )
            if schema_field.legacy_field:
                output_sql_script.append(
                    f"{alter_table_script} {self._create_tags_script(schema_field.column_name, 'legacy_field', schema_field.legacy_field)}"
                )
            if schema_field.comment:
                output_sql_script.append(
                    f"{alter_table_script} ALTER COLUMN {schema_field.column_name} COMMENT '{schema_field.comment}'"
                )
        return output_sql_script&lt;/LI-CODE&gt;&lt;P&gt;which is just a bit more messy than&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;StructType(
[
StructField(
    "columnName1",
    StringType(),
    True,
    metadata = {
        'comment': "This is a comment"
    }
),
StructField(
    "columnName2",
    StringType(),
    True,
    metadata = {
        'comment': "This is a comment"
    }
),
StructField(
    "columnName3",
    StringType(),
    True,
    metadata = {
        'comment': "This is a comment"
    }
)
]
)&lt;/LI-CODE&gt;</description>
      <pubDate>Fri, 25 Oct 2024 14:18:47 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/96145#M39224</guid>
      <dc:creator>ChrisLawford_n1</dc:creator>
      <dc:date>2024-10-25T14:18:47Z</dc:date>
    </item>
    <item>
      <title>Re: StructField Metadata Dictionary - What are the possible keys?</title>
      <link>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/105067#M41980</link>
      <description>&lt;P&gt;Bump,&lt;/P&gt;&lt;P&gt;I've got the same issue. Looks like there was a partial reply from Kaniz but I can't see it in this thread.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jan 2025 19:10:54 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/structfield-metadata-dictionary-what-are-the-possible-keys/m-p/105067#M41980</guid>
      <dc:creator>ipreston</dc:creator>
      <dc:date>2025-01-09T19:10:54Z</dc:date>
    </item>
  </channel>
</rss>

