<?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 Notebook to read complex JSON array in Fabric platform</title>
    <link>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3820122#M6014</link>
    <description>&lt;P&gt;Hello all. I am trying to learn PySpark from this website:&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;A href="https://sparkbyexamples.com/pyspark/pyspark-alias-column-examples/" target="_blank" rel="noopener"&gt;https://sparkbyexamples.com/pyspark/pyspark-alias-column-examples/&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Good info, but I am stuck. I borrowed the simple JSON code that looks like this:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;[&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;{&amp;nbsp;"RecordNumber": 2,&amp;nbsp;"Zipcode": 704&amp;nbsp;},&lt;BR /&gt;{&amp;nbsp;"RecordNumber": 10,&amp;nbsp;"Zipcode": 709&amp;nbsp;}&lt;BR /&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;And I can read that in a data frame. But unfortunately, my data has an array name at the top, like this:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;{&amp;nbsp;"data": [&lt;BR /&gt;{&amp;nbsp;"RecordNumber": 2,&amp;nbsp;"Zipcode": 704&amp;nbsp;},&lt;BR /&gt;{&amp;nbsp;"RecordNumber": 10,&amp;nbsp;"Zipcode": 709 }&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;]&amp;nbsp;}&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;I read these two items into 2 data frames, then do two selects in PySpark:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON1 = df1.select( col(&lt;/SPAN&gt;&lt;SPAN&gt;"RecordNumber"&lt;/SPAN&gt;&lt;SPAN&gt;), col(&lt;/SPAN&gt;&lt;SPAN&gt;"Zipcode"&lt;/SPAN&gt;&lt;SPAN&gt;)) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON2 = df2.select( col(&lt;/SPAN&gt;&lt;SPAN&gt;"data.RecordNumber"&lt;/SPAN&gt;&lt;SPAN&gt;), col(&lt;/SPAN&gt;&lt;SPAN&gt;"data.Zipcode"&lt;/SPAN&gt;&lt;SPAN&gt;)) &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON1.show()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON2.show()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;The two results:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What am I missing to get the second data frame to show two records, similar to the first?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This can't be that hard. What am I missing?&lt;/P&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;Thanks in advance.&lt;/P&gt;
&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Mon, 08 Apr 2024 14:43:24 GMT</pubDate>
    <dc:creator>ToddChitt</dc:creator>
    <dc:date>2024-04-08T14:43:24Z</dc:date>
    <item>
      <title>Notebook to read complex JSON array</title>
      <link>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3820122#M6014</link>
      <description>&lt;P&gt;Hello all. I am trying to learn PySpark from this website:&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;A href="https://sparkbyexamples.com/pyspark/pyspark-alias-column-examples/" target="_blank" rel="noopener"&gt;https://sparkbyexamples.com/pyspark/pyspark-alias-column-examples/&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Good info, but I am stuck. I borrowed the simple JSON code that looks like this:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;[&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;{&amp;nbsp;"RecordNumber": 2,&amp;nbsp;"Zipcode": 704&amp;nbsp;},&lt;BR /&gt;{&amp;nbsp;"RecordNumber": 10,&amp;nbsp;"Zipcode": 709&amp;nbsp;}&lt;BR /&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;And I can read that in a data frame. But unfortunately, my data has an array name at the top, like this:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;{&amp;nbsp;"data": [&lt;BR /&gt;{&amp;nbsp;"RecordNumber": 2,&amp;nbsp;"Zipcode": 704&amp;nbsp;},&lt;BR /&gt;{&amp;nbsp;"RecordNumber": 10,&amp;nbsp;"Zipcode": 709 }&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;]&amp;nbsp;}&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;I read these two items into 2 data frames, then do two selects in PySpark:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON1 = df1.select( col(&lt;/SPAN&gt;&lt;SPAN&gt;"RecordNumber"&lt;/SPAN&gt;&lt;SPAN&gt;), col(&lt;/SPAN&gt;&lt;SPAN&gt;"Zipcode"&lt;/SPAN&gt;&lt;SPAN&gt;)) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON2 = df2.select( col(&lt;/SPAN&gt;&lt;SPAN&gt;"data.RecordNumber"&lt;/SPAN&gt;&lt;SPAN&gt;), col(&lt;/SPAN&gt;&lt;SPAN&gt;"data.Zipcode"&lt;/SPAN&gt;&lt;SPAN&gt;)) &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;BR /&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON1.show()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="courier new,courier"&gt;&lt;SPAN&gt;dfJSON2.show()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;The two results:&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What am I missing to get the second data frame to show two records, similar to the first?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This can't be that hard. What am I missing?&lt;/P&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;Thanks in advance.&lt;/P&gt;
&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 08 Apr 2024 14:43:24 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3820122#M6014</guid>
      <dc:creator>ToddChitt</dc:creator>
      <dc:date>2024-04-08T14:43:24Z</dc:date>
    </item>
    <item>
      <title>Re: Notebook to read complex JSON array</title>
      <link>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3820272#M6018</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="270" data-lia-user-login="ToddChitt" class="lia-mention lia-mention-user"&gt;ToddChitt&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Wouldn't it be possible to use a couple of SQL functions like &lt;A href="https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.explode.html" target="_self"&gt;explode&lt;/A&gt; and &lt;A href="https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html" target="_self"&gt;col&lt;/A&gt; for this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I found that suggested approach in this blog:&amp;nbsp;&lt;A href="https://medium.com/towards-data-engineering/transforming-json-to-lakehouse-tables-with-microsoft-fabric-notebooks-a-step-by-step-guide-d14458b1c284" target="_blank" rel="noopener"&gt;https://medium.com/towards-data-engineering/transforming-json-to-lakehouse-tables-with-microsoft-fabric-notebooks-a-step-by-step-guide-d14458b1c284&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is an example based on your json code in one of my test notebooks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;# Apply transformation to the dataframe
from pyspark.sql.functions import col, explode

exploded_df = df.select(explode(col("data")).alias("data"))

tf_df = exploded_df.select(

    col("data.RecordNumber").alias("RecordNumber"),
    col("data.Zipcode").alias("Zipcode")
)

display(tf_df)

dfJSON1 = tf_df.select( col("RecordNumber"), col("Zipcode"))     
dfJSON1.show()&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2024 15:56:57 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3820272#M6018</guid>
      <dc:creator>Expiscornovus</dc:creator>
      <dc:date>2024-04-08T15:56:57Z</dc:date>
    </item>
    <item>
      <title>Re: Notebook to read complex JSON array</title>
      <link>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3820372#M6023</link>
      <description>&lt;P&gt;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="21750" data-lia-user-login="Expiscornovus" class="lia-mention lia-mention-user"&gt;Expiscornovus&lt;/a&gt;&amp;nbsp;Thanks for the quick response.&lt;/P&gt;
&lt;P&gt;Your sample code worked great. Now it's up to me to figure out how to shred the multi-level nested arrays in my actual JSON documents.&lt;/P&gt;
&lt;P&gt;I will check out that blog and try to learn a little more about PySpark.&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2024 16:34:33 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3820372#M6023</guid>
      <dc:creator>ToddChitt</dc:creator>
      <dc:date>2024-04-08T16:34:33Z</dc:date>
    </item>
    <item>
      <title>Re: Notebook to read complex JSON array</title>
      <link>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3830003#M6214</link>
      <description>&lt;P&gt;Glad to know you got some insights over your query. Please continue using Fabric Community on your further queries.&lt;/P&gt;</description>
      <pubDate>Thu, 11 Apr 2024 08:06:23 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Fabric-platform/Notebook-to-read-complex-JSON-array/m-p/3830003#M6214</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2024-04-11T08:06:23Z</dc:date>
    </item>
  </channel>
</rss>

