Select to view content in your preferred language

Filter Widget - Filter Date Only Field by Quarter

933
15
02-05-2026 10:53 AM
Teresa_Blader
Frequent Contributor

Is there any way to set up a Quarter Filter in Experience Builder in either the Filter or Query widget?

Rules: no data expressions with a new featur layer - I need to still edit the original table in ExB, and I don't want to add a quarter field behind the scenes or something. No developer edition. And without having to create like a unique quarter year combo like Q1 2026, Q2 2026 because there are 6 years of data and that would be 24 filter buttons.

This doesn't seem possible. The only thing I saw was [Date is in "this quarter"]. But no other options besides "this quarter" or "this year" etc.

Goal: Group Filter that applies to a date only field in a few tables, where users can pick the quarter and the year 

Teresa_Blader_0-1770317102298.png

I did this for a summary table with a data expression feature layer in ExB and added Q1, Q2, to fields - but I want to have buttons like this to filter by quarter without doing a data expression. This is the kind of stuff that is SOOO easy in Excel but SO HARD in ArcGIS. 😭

Teresa Blader
Olmsted County GIS
GIS Analyst - GIS Solutions
0 Kudos
15 Replies
Neal_t_k
MVP Regular Contributor

Can you just build your SQL for the filters to have conditions for all six years with an "or"?  This way the it will filter anything in Q1 for example and then your year will be filter by the year filter.

Neal_t_k_0-1770318873968.png

 

Teresa_Blader
Frequent Contributor

Thanks! I didn't think of that. That has potential (though it is PAINFUL to create) and not an option for group filters 😭 I have two tables I need to filter with the "Q1" button

There doesn't seem to be a way to add multiple clauses to a set of group filters... or am i missing something??

Teresa_Blader_1-1770322190247.png

Teresa_Blader_0-1770321619475.png

 

Teresa Blader
Olmsted County GIS
GIS Analyst - GIS Solutions
0 Kudos
Neal_t_k
MVP Regular Contributor

@Teresa_Blader its been a bit, but I think you have to set it up as a group filter.  

Neal_t_k_0-1770322899866.png

Edit: Which might mean redoing the SQL.

Edit 2: Appears multiple SQLs aren't support in group filters...

 

0 Kudos
Teresa_Blader
Frequent Contributor

I'm pretty comfortable with the group filter... but there's no multiple clauses option once into the SQL expression box. 😭

Teresa Blader
Olmsted County GIS
GIS Analyst - GIS Solutions
Neal_t_k
MVP Regular Contributor

@Teresa_Blader I just saw that as well, see my "Edit 2" in the post above.  That's all I have, besides the stuff you said you don't want to do.

NicoleJohnson
MVP

@Teresa_Blader, if you're only interacting with this data in tables (and not a map), you could add the data via Arcade and make your quarter field there. The field would exist "virtually" and not be something you have to update. I believe this capability is only available in ArcGIS Online right now, maybe Enterprise 12.0 but I'm not 100% sure.

Here's an example with the Living Atlas wildfire current incidents layer.

(To add data via Arcade, go to the Data tab, click Add data, and the option will be at the bottom.) 

var p = Portal('https://www.arcgis.com')

// Get wildfires layer
var fs = FeatureSetByPortalItem(p, 'd957997ccee7408287a963600a77f61f', 0, ['FireDiscoveryDateTime'], false)


// Set up a dictionary to hold the new "quarter" field
var newDict = {fields: [
    {name: 'FireDiscoveryDateTime', alias: 'Fire Discovery Date Time', type: 'esriFieldTypeDate'},
    {name: 'Quarter', alias: 'Quarter', type: 'esriFieldTypeString'},
    {name: 'Year', alias: 'Year', type: 'esriFieldTypeSmallInteger'}
    ],
    geometryType: '',
    features: []
}

// Go through the wildfires data and determine quarter
for (var i in fs){
  
  var fireMonth = Month(i.FireDiscoveryDateTime)
  var fireQuarter
  var fireYear = Year(i.FireDiscoveryDateTime)
  
  When(
    (fireMonth == 0 || fireMonth == 1 || fireMonth == 2), fireQuarter = "Q1",
    (fireMonth == 3 || fireMonth == 4 || fireMonth == 5), fireQuarter = "Q2", 
    (fireMonth == 6 || fireMonth == 7 || fireMonth == 8), fireQuarter = "Q3",
    (fireMonth == 9 || fireMonth == 10 || fireMonth == 11), fireQuarter = "Q4",
    "")

  Push(newDict['features'], {attributes: {FireDiscoveryDateTime: i.FireDiscoveryDateTime, Quarter: fireQuarter, Year: fireYear}})

}

// Create a featureset from the now-filled dictionary
var new_fs = FeatureSet(newDict)

return new_fs

 

Recording 2026-02-06 084909.gif

(you'll want to format your years better, I'm just being lazy)

0 Kudos
Teresa_Blader
Frequent Contributor

Thanks for responding!! I've done that for some other tables in ExB, but I need these two tables to be
1. hooked to the map
2. editable in the table
So it can't be an Arcade feature layer. 😭 

You can't do editing in the table there correct with the arcade data expression layer, right?? I couldn't get it to enable editing - the check box is greyed out.

From my arcade data expression layer... which is exactly what I want for non-arcade layers:

Teresa_Blader_0-1770396677384.png

 

The only thing I've come up with for still being able to edit:

Teresa_Blader_1-1770396819520.png

But the queries are so chaotic:

Teresa_Blader_2-1770396897346.png

 

Teresa Blader
Olmsted County GIS
GIS Analyst - GIS Solutions
0 Kudos
NicoleJohnson
MVP

Oh no! Sorry about that. Yeah, I don't think an Arcade layer is going to work for you then. 

Neal_t_k
MVP Regular Contributor

@Teresa_Blader I had one more thought: You could try the select widget on one table and then a layer action on the second table.  Playing around a little bit I was able to select on two tables that way, but couldn't get the layer action filter to work quite right as you describe, but not using your data so you may have some luck with that, worth a shot to look at.