[QGIS-Developer] Purpose and function of "referenced_columns" in Python expression functions?

Johannes Kröger (WhereGroup) johannes.kroeger at wheregroup.com
Mon Nov 22 06:20:39 PST 2021


Hi Matthias,

ah, that makes a lot of sense. So this can be used as a hint for 
optimisation of the ~"bandwidth" of the function so to speak. What a 
cool feature! My dataset was a tiny local geopackage so no surprise it 
just gave me access to all columns straight-away.

When I find time to make a PR I'll add a clearer sentence to the 
documentation and to change the new function template to either remove 
the parameter (so it uses the default) or make it use 
QgsFeatureRequest.ALL_ATTRIBUTES explicitely as hint that one could 
optimize that. (I prefer to remove it, it's optional with a sensible 
default...)

Cheers
Hannes

Am 22.11.21 um 14:48 schrieb Matthias Kuhn:
> Hi Hannes,
>
> This information can be used by the expression engine to determine 
> what needs to be requested from the provider.
> This can lead to significant performance improvements, depending on 
> the scenario.
>
> Depending on other functions used in the expression and the 
> capabilities of the provider itself, the request may or may not 
> include them.
>
> As stated in the help, it's what the function *requires*, these 
> attributes are guaranteed to be available. Others may still be there.
>
> Cheers
> Matthias
>
>
> On Mon, Nov 22, 2021 at 2:41 PM Johannes Kröger (WhereGroup) 
> <johannes.kroeger at wheregroup.com 
> <mailto:johannes.kroeger at wheregroup.com>> wrote:
>
>     Hi list,
>
>     https://docs.qgis.org/3.22/en/docs/user_manual/expressions/expression.html#function-editor
>     <https://docs.qgis.org/3.22/en/docs/user_manual/expressions/expression.html#function-editor>
>
>     mentions the optional keyword argument "referenced_columns" to the
>     `@qgsfunction` decorator. It says
>
>      > referenced_columns=[list]: An array of attribute names that are
>     required to the function. Defaults to
>      > [QgsFeatureRequest.ALL_ATTRIBUTES].
>
>     That, and examples where it is used in other people's code, led me to
>     believe that the feature's attributes would not be accessible unless
>     listed in that parameter or if the parameter was omitted (-> default
>     value getting used -> default is all attributes).
>
>     The default code that gets inserted into the editor includes the
>     decorator `@qgsfunction(args='auto', group='Custom',
>     referenced_columns=[])` so I'd assume that I would not be able to use
>     any attributes in the function.
>
>     In reality I can access them just fine though, e. g.
>     `feature["name"]`
>     if I had features with a "name" attribute and that default
>     `referenced_columns=[]`.
>
>     I can even do so if I used `referenced_columns=["foo", "bar"]`!
>     `feature["name"]` is still perfectly accessible.
>
>     Is this a bug or by design? If by design, what purpose does this
>     parameter have?
>
>     Thanks
>     Hannes
>
>     -- 
>     Johannes Kröger / GIS-Entwickler/-Berater
>     WhereGroup GmbH
>     Eifelstraße 7
>     53119 Bonn
>     Germany
>
>     Tel: +49 (0)228 / 90 90 38 - 36
>     Fax: +49 (0)228 / 90 90 38 - 11
>
>     johannes.kroeger at wheregroup.com
>     <mailto:johannes.kroeger at wheregroup.com>
>     www.wheregroup.com <http://www.wheregroup.com>
>     Geschäftsführer:
>     Olaf Knopp, Peter Stamm
>     Amtsgericht Bonn, HRB 9885
>     -------------------------------
>
>     ********************************************
>     Where2B Konferenz 2021
>     16. Dezember 2021
>     im Universitätsclub Bonn und online
>     https://where2b-conference.com/ <https://where2b-conference.com/>
>     ********************************************
>
>     _______________________________________________
>     QGIS-Developer mailing list
>     QGIS-Developer at lists.osgeo.org <mailto:QGIS-Developer at lists.osgeo.org>
>     List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>     <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
>     Unsubscribe:
>     https://lists.osgeo.org/mailman/listinfo/qgis-developer
>     <https://lists.osgeo.org/mailman/listinfo/qgis-developer>
>
-- 
Johannes Kröger / GIS-Entwickler/-Berater
WhereGroup GmbH
Eifelstraße 7
53119 Bonn
Germany

Tel: +49 (0)228 / 90 90 38 - 36
Fax: +49 (0)228 / 90 90 38 - 11

johannes.kroeger at wheregroup.com
www.wheregroup.com
Geschäftsführer:
Olaf Knopp, Peter Stamm
Amtsgericht Bonn, HRB 9885
-------------------------------

********************************************
Where2B Konferenz 2021
16. Dezember 2021
im Universitätsclub Bonn und online
https://where2b-conference.com/
********************************************

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20211122/ee828217/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xBF7B268A77C202D5.asc
Type: application/pgp-keys
Size: 2471 bytes
Desc: OpenPGP public key
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20211122/ee828217/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 665 bytes
Desc: OpenPGP digital signature
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20211122/ee828217/attachment-0001.sig>


More information about the QGIS-Developer mailing list