BQL is already a powerful tool for querying several different data sources
in Niagara including component data, alarms, and histories. There is
some documentation available in the docDeveloper module that is
worth a read. It includes a nice high level view of BQL syntax and lots
of examples. While examples are always nice, and more are always better,
you can really only get so far with examples. Eventually
you'll come across a problem that isn't covered by an example and if you
don't understand how it works, you're out of luck. My goal here is to
provide a better understanding of the mechanics of how a BQL query is
evaluated so that when you have that report you're building that
keeps you coming back to the brute force approach or pulling your hair out,
you will naturally think BQL instead.