X query (Excel): Difference between revisions
m (→XA queries) |
|||
Line 54: | Line 54: | ||
===XA queries=== | ===XA queries=== | ||
The X syntax can be expanded to be more selective on which [[Item]]s to generate queries for. For example rather than generating queries for all [[Area]]s in a [[Project]], which may all serve a wildly different purpose, it is possible to retrieve only the [[Area]]s with a specific [[Attribute]]. | The X syntax can be expanded to be more selective on which [[Item]]s to generate queries for, using the XA syntax. For example rather than generating queries for all [[Area]]s in a [[Project]], which may all serve a wildly different purpose, it is possible to retrieve only the [[Area]]s with a specific [[Attribute]]. | ||
A query which would retrieve the names only of [[Area]]s which have a [[ | A query which would retrieve the names only of [[Area]]s which have a [[Sewer storage (Water Overlay)|SEWER_STOARGE]] [[Attribute]], marking them as [[Sewer area (Water OVerlay)|Sewer Area]]s for use with the [[Water Overlay]], could be constructed as follows: | ||
<code> | <code>SELECT_NAME_WHERE_AREA_IS_XA_SEWER_STORAGE</code> | ||
This will generate only queries for [[Area]]s which have an [[Attribute]] | This will generate only queries for [[Area]]s which have an [[Attribute]] SEWER_STORAGE, in which "XA_SEWER_STORAGE" is in its entirety replaced by the relevant [[Area]]'s [[ID]]. [[ID]]s of [[Area]]s which do not have the specified [[Attribute]], or of which the [[Attribute]]'s value is 0, are skipped in the same way that the [[ID]]s of deleted [[Item]]s are skipped. | ||
====SORTed queries==== | ====SORTed queries==== | ||
{{stub|type=section}} | |||
Expanding on the XA syntax, it is also possible to sort the resulting [[Area]]s by the value of a specific attribute. This attribute may or may not be the same attribute as indicated in the first part of the XA syntax. For example: | |||
<code>SELECT_NAME_WHERE_AREA_IS_XA_SEWER_STORAGE_SORT_SEWER_PUMP_SPEED</code> | |||
This will generate only queries with a SEWER_STORAGE attribute, as before, but generate them not in the order of the [[Area]]'s respective [[ID]]s, but in the order of the value of their SEWER_PUMP_SPEED attribute. | |||
If an [[Item]] does have the XA [[Attribute]], but is missing the SORT [[Attribute]], then it is treated as if its [[Attribute]] on which to sort had a value of 0. | |||
=====RELATED SORTED queries===== | |||
{{stub|type=section}} | {{stub|type=section}} | ||
===Index and timefame=== | ===Index and timefame=== | ||
{{stub|type=section}} | {{stub|type=section}} |
Revision as of 14:14, 3 March 2021
For use-cases in which an Excel is used to aggregate data, for example to compute specific scores per Neighborhood for display in an Indicator, it is not desirable to create individual queries for each piece of data that needs to be retrieved. Rather than stating each individual Neighborhood for which to retrieve data, an X query can be used to indicate that, across multiple rows, the data of all Neighborhoods should be retrieved, regardless of how many or how few that may be.
Where a normal query would be of the following form:
SELECT_LANDSIZE_WHERE_NEIGHBORHOOD_IS_1
Multiple such queries would be required to retrieve the sizes of all Neighborhoods. Instead, it is possible to create an X query of the following form:
SELECT_LANDSIZE_WHERE_NEIGHBORHOOD_IS_X
The Tygron Platform will interpret this as an instruction to create additional, specific queries in the excel, one for each Neighborhood in the Project.
How X queries are resolved
When parsing an X query, the Tygron Platform finds all X queries in the Excel, and (re)generates the resulting queries. For any clause with an X, it finds all Items specified by the clause, and creates a query for each Item found in this way. The specific queries are generated in the cells below the cell where the X query was placed.
The order of items can be assumed to be in order of ID, and as such consistent for all X queries which have an X for the same clause.
When an Excel file is uploaded or has its X queries otherwise reset, the Tygron Platform finds all X queries in the Excel, and (re)generates the resulting queries. For any clause with an X, it finds all Items specified by the clause, and creates a query for each Item found in this way. The specific queries are generated in the cells below the cell where the X query was placed.
It is important to note that:
- The originally uploaded Excel file remains unaltered. This means when it is downloaded, either normally or as a debug file, the generated queries will not be visible.
- The queries are only (re)generated when an Excel file is uploaded/updated, or Excel X queries are explicitly reset. This means that if additional Items are added to a Project which would match a clause with an X, queries for those Items are not automatically (re)generated.
- In a Project in which Items have been deleted, the ID of that Item would no longer make a valid query, and is therefor skipped while generating specific queries. IF this happens in a sequence, e.g. 4 Neighborhoods with IDs 0 through 3, of which those with ID 1 and 2 have been deleted, the first generated query would be for theNeighborhood with ID 0, followed directly in the next row by a query for theNeighborhood with ID 3.
- If a query generated from an X query resolves to the exact same query which already exists elsewhere in the Excel, even if that query is also generated, only one of those queries will actually function. The cell where the other would have led to an inserted value will remain empty.
- Although X queries tend to serve as a header for an entire column of values; if there are already values in the column, and there are not sufficient queries generated to overwrite them all, then the cells which have a value but do not have a generated query will retain their cell value. They will not be emptied.
Resetting X queries
X queries are not continuously interpreted for the generation of the appropriate specific queries. The queries are only (re)generated when an Excel file is uploaded/updated, or Excel X queries are explicitly reset.
This means that if additional Items are added to a Project which would match a clause with an X, queries for those Items are not automatically (re)generated.
In addition, that also means that during a Session or Test run, the queries which exist are only those which were already generated at the start of a session. An X clause for Buildings will not automatically include Buildings which were constructed during a Session or Test run.
Variations
Multiple variations of X queries are possible, which extend the functionality of X queries to be either broader or more restrictive. Variations can also be combined in single queries.
XY queries
XY queries allow queries to be generated in 2 dimensions in the Excel, creating a matrix of queries to retrieve values with. The queries will be generated in the downward direction with the X being replaced by applicable ID's for that clause, and to the right with the Y being replaced by applicable IDs for that clause. This means that on each row, queries exist in which the X has been replaced by the same values but the Y values differ, and that in each column the Y has been replaced by the same values by the X values differ.
As with X queries without a Y, the first generated query will be generated for the cell directly below the cell containing the XY query. The first query is not also shifted to the right by the presence of a Y.
Y queries
Using a Y in a query can be done even when there is no clause using X in the same query. This means that the query will only be expanded to the right and not downward.
When using a query with only a Y, the first generated query is not shifted downward, and not shifted to the right. The first generated query is placed in the same cell as the Y query itself.
Multi X queries
It is possible to have multiple clauses with an X (multiple queries with a Y) in the same query. In these situations, both X's are expanded in the same direction. Both (or all) clauses resolves to their first applicable ID. For the next generated query, only one of the generated queries resolves to the next ID, while the other(s) remain set to their first ID. This continues until the all applicable IDs of that clause have been used. Then, the other clause 's ID is advanced by one, and the first clause starts at its first ID again, progressing until all its applicable IDs are exhausted.
XA queries
The X syntax can be expanded to be more selective on which Items to generate queries for, using the XA syntax. For example rather than generating queries for all Areas in a Project, which may all serve a wildly different purpose, it is possible to retrieve only the Areas with a specific Attribute.
A query which would retrieve the names only of Areas which have a SEWER_STOARGE Attribute, marking them as Sewer Areas for use with the Water Overlay, could be constructed as follows:
SELECT_NAME_WHERE_AREA_IS_XA_SEWER_STORAGE
This will generate only queries for Areas which have an Attribute SEWER_STORAGE, in which "XA_SEWER_STORAGE" is in its entirety replaced by the relevant Area's ID. IDs of Areas which do not have the specified Attribute, or of which the Attribute's value is 0, are skipped in the same way that the IDs of deleted Items are skipped.
SORTed queries
Expanding on the XA syntax, it is also possible to sort the resulting Areas by the value of a specific attribute. This attribute may or may not be the same attribute as indicated in the first part of the XA syntax. For example:
SELECT_NAME_WHERE_AREA_IS_XA_SEWER_STORAGE_SORT_SEWER_PUMP_SPEED
This will generate only queries with a SEWER_STORAGE attribute, as before, but generate them not in the order of the Area's respective IDs, but in the order of the value of their SEWER_PUMP_SPEED attribute.
If an Item does have the XA Attribute, but is missing the SORT Attribute, then it is treated as if its Attribute on which to sort had a value of 0.