All Apps and Add-ons

Multiple inline drilldown

tpflicke
Path Finder

I wonder if it is possible to perform more than one inline drilldown.

Here is what I would like to do:

  1. run a query A listing the top x error codes during a selected time frame, e.g. 10 minutes
  2. display the results in a table A
  3. when a table A row is clicked run a query B against an error code - bug ticket lookup table (there can be multiple tickets for a given error code)
  4. display the results in a second table B
  5. when clicking on a row in table B perform some action using the data of that row, e.g. show details, run another search ...

I have been using the Table - inline drilldown from the Sideview utils (3.2.6) as starting point.
I understand how to pass data from the clicked row of table A to narrow search B.
However, I struggle to see how step 5. could be made to work given the $row.fields.xxxx$ mechanism of passing data.

1 Solution

sideview
SplunkTrust
SplunkTrust

When you have more than one layer of inline drilldown going on, and you need somewhere in there to refer to more than one layer's worth of tokens, you sometimes have to change the "name" param of Table away from its default of "row". This param determines the "row" in $row.searchTerms$ and $row.fields.someFieldName$, so by changing the prefix on different drilldown layers you can avoid collisions.

<module name="Search">
  <param name="search">  (Query A)</param>

  <!--  this table will render the error codes. -->
  <module name="Pager"> 
    <module name="Table">

      <module name="Search">
        <param name="search">| inputlookup errorCodeToBugTicket | search errorCode="$row.fields.errorCode$"</param>

        <!--  this table will render the bug tickets for the error code the user clicked. -->
        <module name="Pager">
          <module name="Table">
            <param name="name">bugTicketRow</param>

            <module name="Search">
              <param name="search">SOME SEARCH TO SHOW DETAILS INCORPORATING BOTH $row.fields.errorCode$ and $bugTicketRow.fields.ticketId$</param>

              <module name="HTML">
                <param name="html"><![CDATA[
                  <h3>Details for $bugTicketRow.fields.ticketId$ and $row.fields.errorCode$ $search.timeRange.label$</h3>
                ]]></param>
              </module>

              <!--  this table will show whatever details around the search that incorporates both layers of drilldown tokens.. -->
              <module name="Pager">
                <module name="Table" />
              </module>
            </module>
          </module>
        </module>            
      </module>
    </module>      
  </module>
</module>

View solution in original post

0 Karma

sideview
SplunkTrust
SplunkTrust

When you have more than one layer of inline drilldown going on, and you need somewhere in there to refer to more than one layer's worth of tokens, you sometimes have to change the "name" param of Table away from its default of "row". This param determines the "row" in $row.searchTerms$ and $row.fields.someFieldName$, so by changing the prefix on different drilldown layers you can avoid collisions.

<module name="Search">
  <param name="search">  (Query A)</param>

  <!--  this table will render the error codes. -->
  <module name="Pager"> 
    <module name="Table">

      <module name="Search">
        <param name="search">| inputlookup errorCodeToBugTicket | search errorCode="$row.fields.errorCode$"</param>

        <!--  this table will render the bug tickets for the error code the user clicked. -->
        <module name="Pager">
          <module name="Table">
            <param name="name">bugTicketRow</param>

            <module name="Search">
              <param name="search">SOME SEARCH TO SHOW DETAILS INCORPORATING BOTH $row.fields.errorCode$ and $bugTicketRow.fields.ticketId$</param>

              <module name="HTML">
                <param name="html"><![CDATA[
                  <h3>Details for $bugTicketRow.fields.ticketId$ and $row.fields.errorCode$ $search.timeRange.label$</h3>
                ]]></param>
              </module>

              <!--  this table will show whatever details around the search that incorporates both layers of drilldown tokens.. -->
              <module name="Pager">
                <module name="Table" />
              </module>
            </module>
          </module>
        </module>            
      </module>
    </module>      
  </module>
</module>
0 Karma

tpflicke
Path Finder

Excellent, specifying the prefix to avoid collisions was precisely what I was missing. Thanks a lot.

0 Karma

somesoni2
SplunkTrust
SplunkTrust

It should work same as step 3. The query C code should be nested within table B and pass the value from table B to query C using $row.fields.XXX$.

0 Karma
Get Updates on the Splunk Community!

Index This | I am a number, but when you add ‘G’ to me, I go away. What number am I?

March 2024 Edition Hayyy Splunk Education Enthusiasts and the Eternally Curious!  We’re back with another ...

What’s New in Splunk App for PCI Compliance 5.3.1?

The Splunk App for PCI Compliance allows customers to extend the power of their existing Splunk solution with ...

Extending Observability Content to Splunk Cloud

Register to join us !   In this Extending Observability Content to Splunk Cloud Tech Talk, you'll see how to ...