<?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 Superset of data fragments / Compress diagonal data with extra obstacles in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/682001#M233028</link>
    <description>&lt;P&gt;I have three tables. Each has one or more ID fields (out of ID_A, ID_B, ID_C) and assigns values Xn, Yn, Zn to these IDs. In effect, the tables each contain a fragment of information from a set of objects 1...5.&lt;/P&gt;&lt;P&gt;Table X:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_A&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;X1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;X2&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;A1&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;B1&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;X1_1&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;X2_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2a&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2b&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="40px"&gt;A3&lt;/TD&gt;&lt;TD width="25%" height="40px"&gt;B3&lt;/TD&gt;&lt;TD width="25%" height="40px"&gt;X1_3&lt;/TD&gt;&lt;TD width="25%" height="40px"&gt;&lt;P&gt;X2_3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;Table Y:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_A&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;Y1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;Y2&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y1_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="25px"&gt;&lt;FONT color="#3366FF"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD height="25px"&gt;&lt;FONT color="#3366FF"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;A3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;B3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3a&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;A3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;B3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3b&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;A4&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;B4&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;Y1_4&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;Y2_4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table Z:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;STRONG&gt;ID_C&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;STRONG&gt;Z1&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;B1&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;C1&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;Z1_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;B3&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;C3&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;Z1_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;B5&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;C5&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;Z1_5&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;How can I create the superset of all three tables, i.e. reconstruct the "full picture" about obects 1..5 as good as possible?&lt;/P&gt;&lt;P&gt;I tried with &lt;EM&gt;union&lt;/EM&gt; and &lt;EM&gt;join&lt;/EM&gt; in various ways, but I keep tripping over the following obstacles:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;The 1:n relation between ID and values (which should remain expanded as individual rows)&lt;/LI&gt;&lt;LI&gt;Empty fields in between (bad for stats list(...) or stats values(...) because of different-sized MV results)&lt;/LI&gt;&lt;LI&gt;There is no single table that has references to all objects (e.g. object 5 only present in table Z).&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired result:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;ID_A&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;ID_C&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;X1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;X2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;Y1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;Y2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;Z1&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;C1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X1_1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2a&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y1_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2b&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y1_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X1_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3a&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X1_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3b&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Y1_4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Y2_4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B5&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;C5&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_5&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;Sample data:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults
| eval _raw="ID_A;ID_B;X1;X2
A1;B1;X1_1;X2_1
A2;B2;X1_2A;X2_2
A2;B2;X1_2B;X2_2
A3;B3;X1_3;X2_3
"
| multikv forceheader=1
| table ID_A, ID_B, X1, X2

| append [
| makeresults
| eval _raw="ID_A;ID_B;Y1;Y2
A2;B2;Y1_2;
A2;B2;;Y2_2
A3;B3;Y1_3;Y2_3A
A3;B3;Y1_3;Y2_3B
A4;B4;Y1_4;Y2_4
"
| multikv forceheader=1
| table ID_A, ID_B, Y1, Y2
]

| append [
| makeresults
| eval _raw="ID_B;ID_C;Z1
B1;C1;Z1_1
B3;C3;Z1_3
B5;C5;Z1_5
"
| multikv forceheader=1
| table ID_B, ID_C, Z1
]

| table ID_A, ID_B, ID_C, X1, X2, Y1, Y2, Z1&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 26 Mar 2024 13:35:00 GMT</pubDate>
    <dc:creator>rikinet</dc:creator>
    <dc:date>2024-03-26T13:35:00Z</dc:date>
    <item>
      <title>Superset of data fragments / Compress diagonal data with extra obstacles</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/682001#M233028</link>
      <description>&lt;P&gt;I have three tables. Each has one or more ID fields (out of ID_A, ID_B, ID_C) and assigns values Xn, Yn, Zn to these IDs. In effect, the tables each contain a fragment of information from a set of objects 1...5.&lt;/P&gt;&lt;P&gt;Table X:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_A&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;X1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;X2&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;A1&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;B1&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;X1_1&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;X2_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2a&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2b&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="40px"&gt;A3&lt;/TD&gt;&lt;TD width="25%" height="40px"&gt;B3&lt;/TD&gt;&lt;TD width="25%" height="40px"&gt;X1_3&lt;/TD&gt;&lt;TD width="25%" height="40px"&gt;&lt;P&gt;X2_3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;Table Y:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_A&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;Y1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;STRONG&gt;Y2&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y1_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="25px"&gt;&lt;FONT color="#3366FF"&gt;A2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD height="25px"&gt;&lt;FONT color="#3366FF"&gt;B2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;A3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;B3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3a&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;A3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;B3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3b&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%" height="25px"&gt;A4&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;B4&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;Y1_4&lt;/TD&gt;&lt;TD width="25%" height="25px"&gt;Y2_4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table Z:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;STRONG&gt;ID_C&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;STRONG&gt;Z1&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;B1&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;C1&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;Z1_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;B3&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;C3&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;Z1_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;B5&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;C5&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;Z1_5&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;How can I create the superset of all three tables, i.e. reconstruct the "full picture" about obects 1..5 as good as possible?&lt;/P&gt;&lt;P&gt;I tried with &lt;EM&gt;union&lt;/EM&gt; and &lt;EM&gt;join&lt;/EM&gt; in various ways, but I keep tripping over the following obstacles:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;The 1:n relation between ID and values (which should remain expanded as individual rows)&lt;/LI&gt;&lt;LI&gt;Empty fields in between (bad for stats list(...) or stats values(...) because of different-sized MV results)&lt;/LI&gt;&lt;LI&gt;There is no single table that has references to all objects (e.g. object 5 only present in table Z).&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired result:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;ID_A&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;ID_B&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;ID_C&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;X1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;X2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;Y1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;Y2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;STRONG&gt;Z1&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;C1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X1_1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_1&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2a&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y1_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#FF6600"&gt;X1_2b&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_2&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y1_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#3366FF"&gt;Y2_2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X1_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3a&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X1_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;X2_3&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&lt;FONT color="#00FF00"&gt;Y2_3b&lt;/FONT&gt;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;A4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Y1_4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Y2_4&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;B5&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;C5&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD width="12.5%" height="25px"&gt;Z1_5&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;Sample data:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults
| eval _raw="ID_A;ID_B;X1;X2
A1;B1;X1_1;X2_1
A2;B2;X1_2A;X2_2
A2;B2;X1_2B;X2_2
A3;B3;X1_3;X2_3
"
| multikv forceheader=1
| table ID_A, ID_B, X1, X2

| append [
| makeresults
| eval _raw="ID_A;ID_B;Y1;Y2
A2;B2;Y1_2;
A2;B2;;Y2_2
A3;B3;Y1_3;Y2_3A
A3;B3;Y1_3;Y2_3B
A4;B4;Y1_4;Y2_4
"
| multikv forceheader=1
| table ID_A, ID_B, Y1, Y2
]

| append [
| makeresults
| eval _raw="ID_B;ID_C;Z1
B1;C1;Z1_1
B3;C3;Z1_3
B5;C5;Z1_5
"
| multikv forceheader=1
| table ID_B, ID_C, Z1
]

| table ID_A, ID_B, ID_C, X1, X2, Y1, Y2, Z1&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2024 13:35:00 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/682001#M233028</guid>
      <dc:creator>rikinet</dc:creator>
      <dc:date>2024-03-26T13:35:00Z</dc:date>
    </item>
    <item>
      <title>Re: Superset of data fragments / Compress diagonal data with extra obstacles</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/682079#M233049</link>
      <description>&lt;P&gt;Small correction: In the result table, rows 4 and 5, ID_C should be "C3" (from table Z).&lt;/P&gt;</description>
      <pubDate>Wed, 27 Mar 2024 07:59:11 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/682079#M233049</guid>
      <dc:creator>rikinet</dc:creator>
      <dc:date>2024-03-27T07:59:11Z</dc:date>
    </item>
    <item>
      <title>Re: Superset of data fragments / Compress diagonal data with extra obstacles</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/682086#M233051</link>
      <description>&lt;P&gt;First of all, thanks for creating the dummy data, it was very useful, although slightly wrong.&lt;/P&gt;&lt;P&gt;I corrected the data to remove Y1_3 which doesn't exist in your tables nor your desired results.&lt;/P&gt;&lt;P&gt;Try something like this&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults
| eval _raw="ID_A;ID_B;X1;X2
A1;B1;X1_1;X2_1
A2;B2;X1_2A;X2_2
A2;B2;X1_2B;X2_2
A3;B3;X1_3;X2_3
"
| multikv forceheader=1
| table ID_A, ID_B, X1, X2

| append [
| makeresults
| eval _raw="ID_A;ID_B;Y1;Y2
A2;B2;Y1_2;
A2;B2;;Y2_2
A3;B3;;Y2_3A
A3;B3;;Y2_3B
A4;B4;Y1_4;Y2_4
"
| multikv forceheader=1
| table ID_A, ID_B, Y1, Y2
]

| append [
| makeresults
| eval _raw="ID_B;ID_C;Z1
B1;C1;Z1_1
B3;C3;Z1_3
B5;C5;Z1_5
"
| multikv forceheader=1
| table ID_B, ID_C, Z1
]

| table ID_A, ID_B, ID_C, X1, X2, Y1, Y2, Z1
| eventstats values(ID_C) as ID_C values(Z1) as Z1 by ID_B
| eventstats values(X1) as X1 values(X2) as X2 values(Y1) as Y1 values(Y2) as Y2 by ID_A ID_B
| eventstats values(X1) as X1 values(X2) as X2 values(Y1) as Y1 values(Y2) as Y2 values(ID_A) as ID_A by ID_C ID_B
| mvexpand Y2
| mvexpand X1
| fillnull value="N/A"
| streamstats count by ID_A ID_B ID_C X1 X2 Y1 Y2 Z1
| where count==1
| foreach *
    [| eval &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=if(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="N/A",null(),&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;)]
| fields - count&lt;/LI-CODE&gt;&lt;P&gt;Note that mvexpand can cause memory issues, so you need to check your job status to ensure the search works correctly with real data.&lt;/P&gt;</description>
      <pubDate>Wed, 27 Mar 2024 09:46:02 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/682086#M233051</guid>
      <dc:creator>ITWhisperer</dc:creator>
      <dc:date>2024-03-27T09:46:02Z</dc:date>
    </item>
    <item>
      <title>Re: Superset of data fragments / Compress diagonal data with extra obstacles</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/683021#M233286</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/225168"&gt;@ITWhisperer&lt;/a&gt;&amp;nbsp;thanks for your reply. You have definitely put me on the right path.&lt;BR /&gt;&lt;BR /&gt;My original data has more ID and attribute fields, so I needed to find a way to generalize your solution further. I had a bit of a struggle to understand why you chose these particular three &lt;EM&gt;eventstats&lt;/EM&gt; lines with their respective &lt;EM&gt;values(...)&lt;/EM&gt; and &lt;EM&gt;by ...&lt;/EM&gt; clauses.&lt;BR /&gt;&lt;BR /&gt;I believe a more generic recipe would be like this:&lt;BR /&gt;&lt;BR /&gt;If you have &lt;EM&gt;n&lt;/EM&gt; ID fields and &lt;EM&gt;k&lt;/EM&gt; attribute fields, do one &lt;EM&gt;eventstats ... by ID&lt;/EM&gt; for each of the &lt;EM&gt;n&lt;/EM&gt; ID fields:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| eventstats
  values(ID_2) as ID_2, .., values(ID_n) as ID_n,
  values(attr_1) as attr_1, .., values(attr_k) as attr_k
  by ID_1
| eventstats
  values(ID_1) as ID_1, values(ID_3) as ID_3, .., values(ID_n) as ID_n,
  values(attr_1) as attr_1, .., values(attr_k) as attr_k
  by ID_2
| eventstats .. by ID_3
| eventstats .. by ID_n-1
| eventstats
  values(ID_1) as ID_1, .., values(ID_n-1) as ID_n-1,
  values(attr_1) as attr_1, .., values(attr_k) as attr_k
  by ID_n&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The subsequent&amp;nbsp;&lt;EM&gt;mvexpand&lt;/EM&gt; and &lt;EM&gt;streamtstats count ... where count==1&lt;/EM&gt; can be simplified as:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| fillnull value="N/A" ```or stats by fieldlist ignores rows with at least one null value in fieldlist```
| stats count by ID_1, ..., ID_n, attr_1, ..., attr_k | fields - count
| foreach * [ | eval &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=if(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="N/A",null(),&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;) ] ```undo the N/A replacement```&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;This stanza even expands possible multivalues in &lt;U&gt;all&lt;/U&gt; of the &lt;EM&gt;n&lt;/EM&gt; attributes - otherwise each attribute field with potential multivalues would need its own explicit &lt;EM&gt;mvexpand &amp;lt;attr&amp;gt;&lt;/EM&gt;&amp;nbsp;. It also avoids mvexpand's potential memory issue.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For my own sample data, it would read:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;| makeresults
| eval _raw="ID_A;ID_B;X1;X2
A1;B1;X1_1;X2_1
A2;B2;X1_2A;X2_2
A2;B2;X1_2B;X2_2
A3;B3;X1_3;X2_3
"
| multikv forceheader=1
| table ID_A, ID_B, X1, X2

| append [
| makeresults
| eval _raw="ID_A;ID_B;Y1;Y2
A2;B2;Y1_2;
A2;B2;;Y2_2
A3;B3;;Y2_3A
A3;B3;;Y2_3B
A4;B4;Y1_4;Y2_4
"
| multikv forceheader=1
| table ID_A, ID_B, Y1, Y2
]

| append [
| makeresults
| eval _raw="ID_B;ID_C;Z1
B1;C1;Z1_1
B3;C3;Z1_3
B5;C5;Z1_5
"
| multikv forceheader=1
| table ID_B, ID_C, Z1
]
| table ID_A, ID_B, ID_C, X1, X2, Y1, Y2, Z1

```--- relevant code starts here ---```

| eventstats
  values(ID_B) as ID_B, values(ID_C) as ID_C,
  values(X1) as X1, values(X2) as X2, values(Y1) as Y1, values(Y2) as Y2, values(Z1) as Z1
  by ID_A
| eventstats
  values(ID_A) as ID_A, values(ID_C) as ID_C,
  values(X1) as X1, values(X2) as X2, values(Y1) as Y1, values(Y2) as Y2, values(Z1) as Z1
  by ID_B
| eventstats
  values(ID_A) as ID_A, values(ID_B) as ID_B,
  values(X1) as X1, values(X2) as X2, values(Y1) as Y1, values(Y2) as Y2, values(Z1) as Z1
  by ID_C

| fillnull value="N/A" ```or stats by fieldlist ignores rows with at least one null value in fieldlist```
| stats count by ID_A, ID_B, ID_C, X1, X2, Y1, Y2, Z1 | fields - count
| foreach * [ | eval &amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=if(&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;=="N/A",null(),&amp;lt;&amp;lt;FIELD&amp;gt;&amp;gt;) ] ```undo the N/A replacement```&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;Please let me know if I have overlooked something.&lt;/P&gt;</description>
      <pubDate>Wed, 03 Apr 2024 13:12:34 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Superset-of-data-fragments-Compress-diagonal-data-with-extra/m-p/683021#M233286</guid>
      <dc:creator>rikinet</dc:creator>
      <dc:date>2024-04-03T13:12:34Z</dc:date>
    </item>
  </channel>
</rss>

