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
Revered Legend

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!

Stay Connected: Your Guide to May Tech Talks, Office Hours, and Webinars!

Take a look below to explore our upcoming Community Office Hours, Tech Talks, and Webinars this month. This ...

They're back! Join the SplunkTrust and MVP at .conf24

With our highly anticipated annual conference, .conf, comes the fez-wearers you can trust! The SplunkTrust, as ...

Enterprise Security Content Update (ESCU) | New Releases

Last month, the Splunk Threat Research Team had two releases of new security content via the Enterprise ...