<?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: Combine Sub searches with different time references in Splunk Search</title>
    <link>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542742#M153739</link>
    <description>&lt;P&gt;Here's a starting point for a dashboard, but you'll need to accommodate market weekends, holidays, etc.&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;lt;form&amp;gt;
  &amp;lt;init&amp;gt;
    &amp;lt;set token="_time_tok.earliest"&amp;gt;-1mon@d-1d&amp;lt;/set&amp;gt;
    &amp;lt;set token="_time_tok.latest"&amp;gt;-1mon@d&amp;lt;/set&amp;gt;
  &amp;lt;/init&amp;gt;
  &amp;lt;label&amp;gt;Nasdaq Quotes&amp;lt;/label&amp;gt;
  &amp;lt;fieldset submitButton="false" autoRun="true"&amp;gt;
    &amp;lt;input type="time" token="_time_tok" searchWhenChanged="true"&amp;gt;
      &amp;lt;label&amp;gt;&amp;lt;/label&amp;gt;
      &amp;lt;change&amp;gt;
        &amp;lt;condition match="isnum($_time_tok.earliest$) AND isnum($_time_tok.latest$)"&amp;gt;
          &amp;lt;eval token="_time_earliest_tok"&amp;gt;$_time_tok.earliest$&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_latest_tok"&amp;gt;$_time_tok.latest$&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "+1mon")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "+1mon")&amp;lt;/eval&amp;gt;
        &amp;lt;/condition&amp;gt;
        &amp;lt;condition&amp;gt;
          &amp;lt;eval token="_time_earliest_tok"&amp;gt;relative_time(now(), $_time_tok.earliest$)&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_latest_tok"&amp;gt;relative_time(now(), $_time_tok.latest$)&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "+1mon")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "+1mon")&amp;lt;/eval&amp;gt;
        &amp;lt;/condition&amp;gt;
      &amp;lt;/change&amp;gt;
      &amp;lt;default&amp;gt;
        &amp;lt;earliest&amp;gt;-1mon@d-1d&amp;lt;/earliest&amp;gt;
        &amp;lt;latest&amp;gt;-1mon@d&amp;lt;/latest&amp;gt;
      &amp;lt;/default&amp;gt;
    &amp;lt;/input&amp;gt;
  &amp;lt;/fieldset&amp;gt;
  &amp;lt;row&amp;gt;
    &amp;lt;panel&amp;gt;
      &amp;lt;title&amp;gt;Top 10 by Volume&amp;lt;/title&amp;gt;
      &amp;lt;table&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv ((earliest=$_time_minus_1d_earliest_tok$ latest=$_time_minus_1d_latest_tok$) OR (earliest=$_time_earliest_tok$ latest=$_time_latest_tok$) OR (earliest=$_time_plus_1d_earliest_tok$ latest=$_time_plus_1d_latest_tok$) OR (earliest=$_time_plus_1w_earliest_tok$ latest=$_time_plus_1w_latest_tok$) OR (earliest=$_time_plus_1mon_earliest_tok$ latest=$_time_plus_1mon_latest_tok$))
| rex field=source "(?:.*/)?(?&amp;amp;lt;Ticker&amp;amp;gt;[^\.]+)" 
| eval Close_Last=ltrim(Close_Last, "$$") ``` my currency is USD, and my locale uses the $$ prefix ```
| rename Close_Last as Close
| eventstats values(eval(case(_time==$_time_minus_1d_earliest_tok$, Close))) as Close-1d  values(eval(case(_time==$_time_plus_1d_earliest_tok$, Close))) as Close+1d  values(eval(case(_time==$_time_plus_1w_earliest_tok$, Close))) as Close+1w  values(eval(case(_time==$_time_plus_1mon_earliest_tok$, Close))) as Close+1mon by Ticker
| where _time==$_time_earliest_tok$
| sort 10 - Volume
| eval "%-Change - 1d"=round(100 * (Close - 'Close-1d') / 'Close-1d', 1)
| eval "%-Change + 1d"=round(100 * ('Close+1d' - Close) / Close, 1)
| eval "%-Change + 1w"=round(100 * ('Close+1w' - Close) / Close, 1)
| eval "%-Change + 1m"=round(100 * ('Close+1mon' - Close) / Close, 1)
| table Ticker "%-Change - 1d" Volume "%-Change + 1d" "%-Change + 1w" "%-Change + 1m"&amp;lt;/query&amp;gt;
          &amp;lt;earliest&amp;gt;0&amp;lt;/earliest&amp;gt;
          &amp;lt;sampleRatio&amp;gt;1&amp;lt;/sampleRatio&amp;gt;
        &amp;lt;/search&amp;gt;
        &amp;lt;option name="count"&amp;gt;100&amp;lt;/option&amp;gt;
        &amp;lt;option name="dataOverlayMode"&amp;gt;none&amp;lt;/option&amp;gt;
        &amp;lt;option name="drilldown"&amp;gt;none&amp;lt;/option&amp;gt;
        &amp;lt;option name="percentagesRow"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="rowNumbers"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="totalsRow"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="wrap"&amp;gt;true&amp;lt;/option&amp;gt;
      &amp;lt;/table&amp;gt;
    &amp;lt;/panel&amp;gt;
  &amp;lt;/row&amp;gt;
&amp;lt;/form&amp;gt;&lt;/LI-CODE&gt;</description>
    <pubDate>Sun, 07 Mar 2021 16:52:18 GMT</pubDate>
    <dc:creator>tscroggins</dc:creator>
    <dc:date>2021-03-07T16:52:18Z</dc:date>
    <item>
      <title>Combine Sub searches with different time references</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542709#M153728</link>
      <description>&lt;P&gt;Hey,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;right now I am a bit messed up in the mind and not sure if I try to find an overly complicated solution to a maybe fairly simple problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Secanrio is; I have a set of historical stock market prices (Ticker, Close-price, Volume). I want to extract several information here:&lt;/P&gt;&lt;P&gt;1. The %Change of a given day compared to the previous (work) day and the respective volume. Additionally the time frame should be defined relatively (set only the date fix, but the range flexible). Table that for the Top10 with their respective volume that day.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;2. Use the ouput from above to generate a similar set but now with 1day, week, month later then the given day, but only for the Top10 above and combine that into one result table&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Desired outcome:&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="20%" height="25px"&gt;Ticker&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;%-Change -1d&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;Volume&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;%-Change +1d&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;%-Change +1w&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="20%" height="25px"&gt;AAA&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;5.0&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;10000&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;1.0&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;-8.0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="20%" height="25px"&gt;BBB&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;3.0&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;50000&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;4.0&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;4.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="20%" height="25px"&gt;CCC&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;1.0&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;70000&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;-1.0&lt;/TD&gt;&lt;TD width="20%" height="25px"&gt;3.0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think I solved part 1&amp;nbsp; with:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;index=market_price Close!=""  
[
search latest="6/23/2020:00:00:00"
| addinfo 
| head 1 
| eval latest=info_max_time+86400
| eval earliest=info_max_time-86400
| fields earliest,latest 
| format "(" "(" "" ")" "OR" ")" 
]
| bin span=1d _time
| stats avg(Close) as Close avg(Volume) as Vol by _time Ticker
| streamstats global=f current=f first(Close) as p_close by Ticker
| eval delta=round(((Close-p_close)/p_close)*100,2)
| where delta!=""
| eval Amount_in_Mio=round((Close*Vol)/1000000,0)
| where Amount_in_Mio&amp;gt;2000
| table Ticker delta Amount_in_Mio
| sort - delta |head 10&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Part 2 I can get a set of results for the day after, but not based on the Top 10 from above:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;index=market_price Close!=""  
[
search earliest="6/23/2020:00:00:00"
| addinfo 
| head 1 
| eval latest=info_min_time+86400
| eval earliest=info_min_time-86400
| fields earliest,latest 
| format "(" "(" "" ")" "OR" ")" 
]
| bin span=1d _time
| stats avg(Close) as Close avg(Volume) as Vol by _time Ticker
| streamstats global=f current=f first(Close) as p_close by Ticker
| eval delta=round(((Close-p_close)/p_close)*100,2)
| where delta!=""

| table Ticker delta
| sort - delta |head 10&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think right now, I think I would need to combine several sub searches for relative times, the first Top10 and the subsequent datasets.&lt;/P&gt;&lt;P&gt;Not sure If I moved myself into a dead end here, so any suggestions are welcome.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 06 Mar 2021 23:57:33 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542709#M153728</guid>
      <dc:creator>MarcusBB</dc:creator>
      <dc:date>2021-03-06T23:57:33Z</dc:date>
    </item>
    <item>
      <title>Re: Combine Sub searches with different time references</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542736#M153737</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/232199"&gt;@MarcusBB&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here are two examples, one search using multiple join commands with subsearches and one search using no joins. Both produce the same output but require pre-calculating time ranges. In a Simple XML dashboard, the time ranges can be calculated in change events linked to a time input.&lt;/P&gt;&lt;P&gt;I've used historical Nasdaq data from&amp;nbsp;&lt;A href="https://www.nasdaq.com/market-activity/quotes/historical" target="_blank"&gt;https://www.nasdaq.com/market-activity/quotes/historical&lt;/A&gt; for fifteen symbols:&amp;nbsp;&amp;nbsp;AAPL, AMD, AMZN, CSCO, DELL, FB, IBM, MSFT, ORCL, QCOM, SBUX, SPLK, TSLA, TWTR, ZNGA. (Note that I'm a freelance Splunker, not a stock trader!)&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;``` my data for 2020-09-01 in America/New_York https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ```
``` -1d earliest=1598846400 latest=1598932800 ```
``` -0d earliest=1598932800 latest=1599019200 ```
``` +1d earliest=1599019200 latest=1599105600 ```
``` +1w earliest=1599537600 latest=1599624000 ```
``` +1mon earliest=1601524800 latest=1601611200 ```
index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv earliest=1598932800 latest=1599019200 
| rex field=source "(?:.*/)?(?&amp;lt;Ticker&amp;gt;[^\.]+)" 
| eval Close_Last=ltrim(Close_Last, "$") ``` my currency is USD, and my locale uses the $ prefix ```
| rename Close_Last as Close
``` end of my data ``` 
| sort 10 - Volume 
| table Ticker Close Volume
| join type=left Ticker 
    [ search index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv earliest=1598846400 latest=1598932800 
    | rex field=source "(?:.*/)?(?&amp;lt;Ticker&amp;gt;[^\.]+)" 
    | eval Close_Last=ltrim(Close_Last, "$")
    | table Ticker Close_Last 
    | rename Close_Last as Close-1d ] 
| join type=left Ticker 
    [ search index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv earliest=1599019200 latest=1599105600 
    | rex field=source "(?:.*/)?(?&amp;lt;Ticker&amp;gt;[^\.]+)" 
    | eval Close_Last=ltrim(Close_Last, "$")
    | table Ticker Close_Last 
    | rename Close_Last as Close+1d ] 
| join type=left Ticker 
    [ search index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv earliest=1599537600 latest=1599624000 
    | rex field=source "(?:.*/)?(?&amp;lt;Ticker&amp;gt;[^\.]+)" 
    | eval Close_Last=ltrim(Close_Last, "$")
    | table Ticker Close_Last 
    | rename Close_Last as Close+1w ] 
| join type=left Ticker 
    [ search index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv earliest=1601524800 latest=1601611200 
    | rex field=source "(?:.*/)?(?&amp;lt;Ticker&amp;gt;[^\.]+)" 
    | eval Close_Last=ltrim(Close_Last, "$")
    | table Ticker Close_Last 
    | rename Close_Last as Close+1mon ]
| eval "%-Change - 1d"=round(100 * (Close - 'Close-1d') / 'Close-1d', 1)
| eval "%-Change + 1d"=round(100 * ('Close+1d' - Close) / Close, 1)
| eval "%-Change + 1w"=round(100 * ('Close+1w' - Close) / Close, 1)
| eval "%-Change + 1m"=round(100 * ('Close+1mon' - Close) / Close, 1)
| table Ticker "%-Change - 1d" Volume "%-Change + 1d" "%-Change + 1w" "%-Change + 1m"&lt;/LI-CODE&gt;&lt;TABLE width="514"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="47"&gt;Ticker&lt;/TD&gt;&lt;TD width="96"&gt;%-Change - 1d&lt;/TD&gt;&lt;TD width="70"&gt;Volume&lt;/TD&gt;&lt;TD width="98"&gt;%-Change + 1d&lt;/TD&gt;&lt;TD width="101"&gt;%-Change + 1w&lt;/TD&gt;&lt;TD width="102"&gt;%-Change + 1m&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAPL&lt;/TD&gt;&lt;TD&gt;4.0&lt;/TD&gt;&lt;TD&gt;152470100&lt;/TD&gt;&lt;TD&gt;-2.1&lt;/TD&gt;&lt;TD&gt;-15.9&lt;/TD&gt;&lt;TD&gt;-13.0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TSLA&lt;/TD&gt;&lt;TD&gt;-4.7&lt;/TD&gt;&lt;TD&gt;90119420&lt;/TD&gt;&lt;TD&gt;-5.8&lt;/TD&gt;&lt;TD&gt;-30.5&lt;/TD&gt;&lt;TD&gt;-5.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMD&lt;/TD&gt;&lt;TD&gt;1.5&lt;/TD&gt;&lt;TD&gt;56117100&lt;/TD&gt;&lt;TD&gt;-2.1&lt;/TD&gt;&lt;TD&gt;-14.6&lt;/TD&gt;&lt;TD&gt;-7.9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;MSFT&lt;/TD&gt;&lt;TD&gt;0.8&lt;/TD&gt;&lt;TD&gt;25791240&lt;/TD&gt;&lt;TD&gt;1.9&lt;/TD&gt;&lt;TD&gt;-10.8&lt;/TD&gt;&lt;TD&gt;-6.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CSCO&lt;/TD&gt;&lt;TD&gt;-0.5&lt;/TD&gt;&lt;TD&gt;23344890&lt;/TD&gt;&lt;TD&gt;0.9&lt;/TD&gt;&lt;TD&gt;-4.8&lt;/TD&gt;&lt;TD&gt;-7.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;FB&lt;/TD&gt;&lt;TD&gt;0.8&lt;/TD&gt;&lt;TD&gt;17320870&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;-8.2&lt;/TD&gt;&lt;TD&gt;-9.8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ZNGA&lt;/TD&gt;&lt;TD&gt;0.1&lt;/TD&gt;&lt;TD&gt;12708640&lt;/TD&gt;&lt;TD&gt;-0.1&lt;/TD&gt;&lt;TD&gt;-8.3&lt;/TD&gt;&lt;TD&gt;4.6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TWTR&lt;/TD&gt;&lt;TD&gt;1.4&lt;/TD&gt;&lt;TD&gt;10478790&lt;/TD&gt;&lt;TD&gt;6.1&lt;/TD&gt;&lt;TD&gt;-7.2&lt;/TD&gt;&lt;TD&gt;13.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ORCL&lt;/TD&gt;&lt;TD&gt;0.8&lt;/TD&gt;&lt;TD&gt;10170910&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;-4.1&lt;/TD&gt;&lt;TD&gt;3.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;QCOM&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;9101301&lt;/TD&gt;&lt;TD&gt;1.0&lt;/TD&gt;&lt;TD&gt;-10.0&lt;/TD&gt;&lt;TD&gt;-2.0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Joins are great for modeling searches, but they have a bad reputation, sometimes deserved, sometimes not. In my small, standalone environment, this search executes in about 1.5 seconds. That's a bit slow.&lt;/P&gt;&lt;P&gt;Here's a similar search without joins that executes in about 0.5 seconds.&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;``` my data for 2020-09-01 in America/New_York https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ```
``` -1d earliest=1598846400 latest=1598932800 ```
``` -0d earliest=1598932800 latest=1599019200 ```
``` +1d earliest=1599019200 latest=1599105600 ```
``` +1w earliest=1599537600 latest=1599624000 ```
``` +1mon earliest=1601524800 latest=1601611200 ```
index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv ((earliest=1598846400 latest=1598932800) OR (earliest=1598932800 latest=1599019200) OR (earliest=1599019200 latest=1599105600) OR (earliest=1599537600 latest=1599624000) OR (earliest=1601524800 latest=1601611200))
| rex field=source "(?:.*/)?(?&amp;lt;Ticker&amp;gt;[^\.]+)" 
| eval Close_Last=ltrim(Close_Last, "$") ``` my currency is USD, and my locale uses the $ prefix ```
| rename Close_Last as Close
| eventstats values(eval(case(_time==1598846400, Close))) as Close-1d  values(eval(case(_time==1599019200, Close))) as Close+1d  values(eval(case(_time==1599537600, Close))) as Close+1w  values(eval(case(_time==1601524800, Close))) as Close+1mon by Ticker
| where _time==1598932800
| sort 10 - Volume
| eval "%-Change - 1d"=round(100 * (Close - 'Close-1d') / 'Close-1d', 1)
| eval "%-Change + 1d"=round(100 * ('Close+1d' - Close) / Close, 1)
| eval "%-Change + 1w"=round(100 * ('Close+1w' - Close) / Close, 1)
| eval "%-Change + 1m"=round(100 * ('Close+1mon' - Close) / Close, 1)
| table Ticker "%-Change - 1d" Volume "%-Change + 1d" "%-Change + 1w" "%-Change + 1m"&lt;/LI-CODE&gt;&lt;TABLE width="514"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="47"&gt;Ticker&lt;/TD&gt;&lt;TD width="96"&gt;%-Change - 1d&lt;/TD&gt;&lt;TD width="70"&gt;Volume&lt;/TD&gt;&lt;TD width="98"&gt;%-Change + 1d&lt;/TD&gt;&lt;TD width="101"&gt;%-Change + 1w&lt;/TD&gt;&lt;TD width="102"&gt;%-Change + 1m&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AAPL&lt;/TD&gt;&lt;TD&gt;4.0&lt;/TD&gt;&lt;TD&gt;152470100&lt;/TD&gt;&lt;TD&gt;-2.1&lt;/TD&gt;&lt;TD&gt;-15.9&lt;/TD&gt;&lt;TD&gt;-13.0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TSLA&lt;/TD&gt;&lt;TD&gt;-4.7&lt;/TD&gt;&lt;TD&gt;90119420&lt;/TD&gt;&lt;TD&gt;-5.8&lt;/TD&gt;&lt;TD&gt;-30.5&lt;/TD&gt;&lt;TD&gt;-5.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMD&lt;/TD&gt;&lt;TD&gt;1.5&lt;/TD&gt;&lt;TD&gt;56117100&lt;/TD&gt;&lt;TD&gt;-2.1&lt;/TD&gt;&lt;TD&gt;-14.6&lt;/TD&gt;&lt;TD&gt;-7.9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;MSFT&lt;/TD&gt;&lt;TD&gt;0.8&lt;/TD&gt;&lt;TD&gt;25791240&lt;/TD&gt;&lt;TD&gt;1.9&lt;/TD&gt;&lt;TD&gt;-10.8&lt;/TD&gt;&lt;TD&gt;-6.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CSCO&lt;/TD&gt;&lt;TD&gt;-0.5&lt;/TD&gt;&lt;TD&gt;23344890&lt;/TD&gt;&lt;TD&gt;0.9&lt;/TD&gt;&lt;TD&gt;-4.8&lt;/TD&gt;&lt;TD&gt;-7.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;FB&lt;/TD&gt;&lt;TD&gt;0.8&lt;/TD&gt;&lt;TD&gt;17320870&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;-8.2&lt;/TD&gt;&lt;TD&gt;-9.8&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ZNGA&lt;/TD&gt;&lt;TD&gt;0.1&lt;/TD&gt;&lt;TD&gt;12708640&lt;/TD&gt;&lt;TD&gt;-0.1&lt;/TD&gt;&lt;TD&gt;-8.3&lt;/TD&gt;&lt;TD&gt;4.6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TWTR&lt;/TD&gt;&lt;TD&gt;1.4&lt;/TD&gt;&lt;TD&gt;10478790&lt;/TD&gt;&lt;TD&gt;6.1&lt;/TD&gt;&lt;TD&gt;-7.2&lt;/TD&gt;&lt;TD&gt;13.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ORCL&lt;/TD&gt;&lt;TD&gt;0.8&lt;/TD&gt;&lt;TD&gt;10170910&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;-4.1&lt;/TD&gt;&lt;TD&gt;3.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;QCOM&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;9101301&lt;/TD&gt;&lt;TD&gt;1.0&lt;/TD&gt;&lt;TD&gt;-10.0&lt;/TD&gt;&lt;TD&gt;-2.0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Whether you do or don't use joins depends on your environment. In my case, I would use the search without joins, as each of the join subsearches returns about the same number of events as the simplified search, but the simplified search does away with the join overhead (subsearch startup and teardown, set operations, etc.).&lt;/P&gt;</description>
      <pubDate>Sun, 07 Mar 2021 15:42:33 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542736#M153737</guid>
      <dc:creator>tscroggins</dc:creator>
      <dc:date>2021-03-07T15:42:33Z</dc:date>
    </item>
    <item>
      <title>Re: Combine Sub searches with different time references</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542737#M153738</link>
      <description>&lt;P&gt;&lt;a href="https://community.splunk.com/t5/user/viewprofilepage/user-id/49493"&gt;@tscroggins&lt;/a&gt;&amp;nbsp;: awesome. Thanks for the input! I think I'll have an exciting evening today to try it.&lt;BR /&gt;I'll let you know how it went.&lt;/P&gt;</description>
      <pubDate>Sun, 07 Mar 2021 15:52:19 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542737#M153738</guid>
      <dc:creator>MarcusBB</dc:creator>
      <dc:date>2021-03-07T15:52:19Z</dc:date>
    </item>
    <item>
      <title>Re: Combine Sub searches with different time references</title>
      <link>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542742#M153739</link>
      <description>&lt;P&gt;Here's a starting point for a dashboard, but you'll need to accommodate market weekends, holidays, etc.&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;lt;form&amp;gt;
  &amp;lt;init&amp;gt;
    &amp;lt;set token="_time_tok.earliest"&amp;gt;-1mon@d-1d&amp;lt;/set&amp;gt;
    &amp;lt;set token="_time_tok.latest"&amp;gt;-1mon@d&amp;lt;/set&amp;gt;
  &amp;lt;/init&amp;gt;
  &amp;lt;label&amp;gt;Nasdaq Quotes&amp;lt;/label&amp;gt;
  &amp;lt;fieldset submitButton="false" autoRun="true"&amp;gt;
    &amp;lt;input type="time" token="_time_tok" searchWhenChanged="true"&amp;gt;
      &amp;lt;label&amp;gt;&amp;lt;/label&amp;gt;
      &amp;lt;change&amp;gt;
        &amp;lt;condition match="isnum($_time_tok.earliest$) AND isnum($_time_tok.latest$)"&amp;gt;
          &amp;lt;eval token="_time_earliest_tok"&amp;gt;$_time_tok.earliest$&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_latest_tok"&amp;gt;$_time_tok.latest$&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_earliest_tok"&amp;gt;relative_time($_time_tok.earliest$, "+1mon")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_latest_tok"&amp;gt;relative_time($_time_tok.latest$, "+1mon")&amp;lt;/eval&amp;gt;
        &amp;lt;/condition&amp;gt;
        &amp;lt;condition&amp;gt;
          &amp;lt;eval token="_time_earliest_tok"&amp;gt;relative_time(now(), $_time_tok.earliest$)&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_latest_tok"&amp;gt;relative_time(now(), $_time_tok.latest$)&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_minus_1d_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "-1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1d_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "+1d")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1w_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "+1w")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_earliest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.earliest$), "+1mon")&amp;lt;/eval&amp;gt;
          &amp;lt;eval token="_time_plus_1mon_latest_tok"&amp;gt;relative_time(relative_time(now(), $_time_tok.latest$), "+1mon")&amp;lt;/eval&amp;gt;
        &amp;lt;/condition&amp;gt;
      &amp;lt;/change&amp;gt;
      &amp;lt;default&amp;gt;
        &amp;lt;earliest&amp;gt;-1mon@d-1d&amp;lt;/earliest&amp;gt;
        &amp;lt;latest&amp;gt;-1mon@d&amp;lt;/latest&amp;gt;
      &amp;lt;/default&amp;gt;
    &amp;lt;/input&amp;gt;
  &amp;lt;/fieldset&amp;gt;
  &amp;lt;row&amp;gt;
    &amp;lt;panel&amp;gt;
      &amp;lt;title&amp;gt;Top 10 by Volume&amp;lt;/title&amp;gt;
      &amp;lt;table&amp;gt;
        &amp;lt;search&amp;gt;
          &amp;lt;query&amp;gt;index=nasdaq_market_activity sourcetype=nasdaq_quotes_csv ((earliest=$_time_minus_1d_earliest_tok$ latest=$_time_minus_1d_latest_tok$) OR (earliest=$_time_earliest_tok$ latest=$_time_latest_tok$) OR (earliest=$_time_plus_1d_earliest_tok$ latest=$_time_plus_1d_latest_tok$) OR (earliest=$_time_plus_1w_earliest_tok$ latest=$_time_plus_1w_latest_tok$) OR (earliest=$_time_plus_1mon_earliest_tok$ latest=$_time_plus_1mon_latest_tok$))
| rex field=source "(?:.*/)?(?&amp;amp;lt;Ticker&amp;amp;gt;[^\.]+)" 
| eval Close_Last=ltrim(Close_Last, "$$") ``` my currency is USD, and my locale uses the $$ prefix ```
| rename Close_Last as Close
| eventstats values(eval(case(_time==$_time_minus_1d_earliest_tok$, Close))) as Close-1d  values(eval(case(_time==$_time_plus_1d_earliest_tok$, Close))) as Close+1d  values(eval(case(_time==$_time_plus_1w_earliest_tok$, Close))) as Close+1w  values(eval(case(_time==$_time_plus_1mon_earliest_tok$, Close))) as Close+1mon by Ticker
| where _time==$_time_earliest_tok$
| sort 10 - Volume
| eval "%-Change - 1d"=round(100 * (Close - 'Close-1d') / 'Close-1d', 1)
| eval "%-Change + 1d"=round(100 * ('Close+1d' - Close) / Close, 1)
| eval "%-Change + 1w"=round(100 * ('Close+1w' - Close) / Close, 1)
| eval "%-Change + 1m"=round(100 * ('Close+1mon' - Close) / Close, 1)
| table Ticker "%-Change - 1d" Volume "%-Change + 1d" "%-Change + 1w" "%-Change + 1m"&amp;lt;/query&amp;gt;
          &amp;lt;earliest&amp;gt;0&amp;lt;/earliest&amp;gt;
          &amp;lt;sampleRatio&amp;gt;1&amp;lt;/sampleRatio&amp;gt;
        &amp;lt;/search&amp;gt;
        &amp;lt;option name="count"&amp;gt;100&amp;lt;/option&amp;gt;
        &amp;lt;option name="dataOverlayMode"&amp;gt;none&amp;lt;/option&amp;gt;
        &amp;lt;option name="drilldown"&amp;gt;none&amp;lt;/option&amp;gt;
        &amp;lt;option name="percentagesRow"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="rowNumbers"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="totalsRow"&amp;gt;false&amp;lt;/option&amp;gt;
        &amp;lt;option name="wrap"&amp;gt;true&amp;lt;/option&amp;gt;
      &amp;lt;/table&amp;gt;
    &amp;lt;/panel&amp;gt;
  &amp;lt;/row&amp;gt;
&amp;lt;/form&amp;gt;&lt;/LI-CODE&gt;</description>
      <pubDate>Sun, 07 Mar 2021 16:52:18 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Search/Combine-Sub-searches-with-different-time-references/m-p/542742#M153739</guid>
      <dc:creator>tscroggins</dc:creator>
      <dc:date>2021-03-07T16:52:18Z</dc:date>
    </item>
  </channel>
</rss>

