Referring to the parent layer with aggregate functions in QGIS Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Dissolve ploygons in QGIS or Grass to new polygons of defined population sizesWhat are QGIS equivalent functions for ArcPy's Update/Delete Row/Field?How to compute percent of a fieldIs there a quick way to clear all attributes from a layer but leave the polygons in place?Proportional aggregation of census data between layers in QGIS?Creating a Vineyard Map with QGIS using FishnetQGIS Print Composer: How can I get the sum of the canopy areas that are displayed on the map?Auto-populate “from” and “to” attribute fields of line layer with Unique IDs of points from point layer?Calculating point layer values aggregated by sub-polygons in QGIS 2Automatic numbering of attribute table in QGIS?

Restricting the Object Type for the get method in java HashMap

Which types of prepositional phrase is "toward its employees" in Philosophy guiding the organization's policies towards its employees is not bad?

Is there night in Alpha Complex?

How do I find my Spellcasting Ability for my D&D character?

Is there a spell that can create a permanent fire?

Is there a verb for listening stealthily?

Can I take recommendation from someone I met at a conference?

Cost function for LTI system identification

Can gravitational waves pass through a black hole?

Why does BitLocker not use RSA?

How does Billy Russo acquire his 'Jigsaw' mask?

No Invitation for Tourist Visa, But i want to visit

Fit odd number of triplets in a measure?

calculator's angle answer for trig ratios that can work in more than 1 quadrant on the unit circle

Should man-made satellites feature an intelligent inverted "cow catcher"?

Improvising over quartal voicings

How to get a flat-head nail out of a piece of wood?

draw a pulley system

Short story about astronauts fertilizing soil with their own bodies

Understanding piped commands in GNU/Linux

Where did Ptolemy compare the Earth to the distance of fixed stars?

The Nth Gryphon Number

Pointing to problems without suggesting solutions

Inverse square law not accurate for non-point masses?



Referring to the parent layer with aggregate functions in QGIS



Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Dissolve ploygons in QGIS or Grass to new polygons of defined population sizesWhat are QGIS equivalent functions for ArcPy's Update/Delete Row/Field?How to compute percent of a fieldIs there a quick way to clear all attributes from a layer but leave the polygons in place?Proportional aggregation of census data between layers in QGIS?Creating a Vineyard Map with QGIS using FishnetQGIS Print Composer: How can I get the sum of the canopy areas that are displayed on the map?Auto-populate “from” and “to” attribute fields of line layer with Unique IDs of points from point layer?Calculating point layer values aggregated by sub-polygons in QGIS 2Automatic numbering of attribute table in QGIS?



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








3















I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.



The formula is;



aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)



Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.



So far, I've tried replacing "a field from the parent layer" with;



@parent "field"
"field"@parent
"field@parent"
"field(@parent)"



...and probably a half-dozen other combinations of parentheses, quotes and orders.



The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?




Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.



In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.



I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.



In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.










share|improve this question
























  • Within aggregate(), if you call the first part layer:=my parent layer instead of child, it will become more apparent and easily understood. You can access to any parent field just by " field " without @parent.

    – Kazuhito
    Oct 25 '18 at 9:30


















3















I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.



The formula is;



aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)



Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.



So far, I've tried replacing "a field from the parent layer" with;



@parent "field"
"field"@parent
"field@parent"
"field(@parent)"



...and probably a half-dozen other combinations of parentheses, quotes and orders.



The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?




Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.



In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.



I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.



In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.










share|improve this question
























  • Within aggregate(), if you call the first part layer:=my parent layer instead of child, it will become more apparent and easily understood. You can access to any parent field just by " field " without @parent.

    – Kazuhito
    Oct 25 '18 at 9:30














3












3








3








I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.



The formula is;



aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)



Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.



So far, I've tried replacing "a field from the parent layer" with;



@parent "field"
"field"@parent
"field@parent"
"field(@parent)"



...and probably a half-dozen other combinations of parentheses, quotes and orders.



The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?




Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.



In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.



I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.



In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.










share|improve this question
















I'm trying to find how to refer to a field of a parent layer as a filter for an aggregate function. The instructions specify that the parent layer can be referred to with the variable @parent, but I've tried all manner of combinations and can't seem to get any to work.



The formula is;



aggregate(layer:='my child layer',aggregate:='sum',expression:="a field from the child layer",filter:="a field from the parent layer">1000)



Obviously, the field from the parent layer also appears in the child layer (otherwise the filter wouldn't work), but I want to build an expression which will iterate over several rows in the parent layer, each of which is a particular field in the child layer.



So far, I've tried replacing "a field from the parent layer" with;



@parent "field"
"field"@parent
"field@parent"
"field(@parent)"



...and probably a half-dozen other combinations of parentheses, quotes and orders.



The example simply uses 'geometry(@parent)', is it not possible with anything other than geometry?




Just in case the above doesn't make sense, or anyone can think of an alternative method, what I'm trying to do (in a simple example), would be if say one layer 'countries' had the fields "area", "urban population", "rural population", and "adult population". In each row is a different country.



In another layer 'summary', there are the fields "field", and "total areas". Each row is a field from the 'countries' layer.



I want the total areas column to add up the the total areas from 'countries' where those countries relevant populations are over 1000. So "total areas" for the row 'urban population' would show the total are of all countries where the urban population was over 1000, but "total areas" in the row 'rural population' would show the total area of all countries where the rural population was over 1000.



In the more complex real world problem I'm working on, there are 36 rows in the 'summary' table (36 fields to summarise from the child layer), and 9 measurements (in addition to area) to summarise. So writing a single query for each summary (360 of them) is just not an option.







qgis aggregation






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Oct 24 '18 at 16:41







Isaacson

















asked Oct 24 '18 at 15:38









IsaacsonIsaacson

491313




491313












  • Within aggregate(), if you call the first part layer:=my parent layer instead of child, it will become more apparent and easily understood. You can access to any parent field just by " field " without @parent.

    – Kazuhito
    Oct 25 '18 at 9:30


















  • Within aggregate(), if you call the first part layer:=my parent layer instead of child, it will become more apparent and easily understood. You can access to any parent field just by " field " without @parent.

    – Kazuhito
    Oct 25 '18 at 9:30

















Within aggregate(), if you call the first part layer:=my parent layer instead of child, it will become more apparent and easily understood. You can access to any parent field just by " field " without @parent.

– Kazuhito
Oct 25 '18 at 9:30






Within aggregate(), if you call the first part layer:=my parent layer instead of child, it will become more apparent and easily understood. You can access to any parent field just by " field " without @parent.

– Kazuhito
Oct 25 '18 at 9:30











1 Answer
1






active

oldest

votes


















2














I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)).



How about attribute()? You could try filter:=attribute(@parent,'field')>1000 - keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.



EDIT: This only works in QGIS 3.x as @parent is not available in 2.x






share|improve this answer




















  • 1





    Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.

    – Isaacson
    Oct 25 '18 at 6:44











  • using QGIS 3.6 it works

    – PieterB
    Apr 13 at 11:09











  • Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.

    – she_weeds
    Apr 13 at 11:51












Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f300045%2freferring-to-the-parent-layer-with-aggregate-functions-in-qgis%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2














I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)).



How about attribute()? You could try filter:=attribute(@parent,'field')>1000 - keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.



EDIT: This only works in QGIS 3.x as @parent is not available in 2.x






share|improve this answer




















  • 1





    Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.

    – Isaacson
    Oct 25 '18 at 6:44











  • using QGIS 3.6 it works

    – PieterB
    Apr 13 at 11:09











  • Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.

    – she_weeds
    Apr 13 at 11:51
















2














I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)).



How about attribute()? You could try filter:=attribute(@parent,'field')>1000 - keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.



EDIT: This only works in QGIS 3.x as @parent is not available in 2.x






share|improve this answer




















  • 1





    Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.

    – Isaacson
    Oct 25 '18 at 6:44











  • using QGIS 3.6 it works

    – PieterB
    Apr 13 at 11:09











  • Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.

    – she_weeds
    Apr 13 at 11:51














2












2








2







I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)).



How about attribute()? You could try filter:=attribute(@parent,'field')>1000 - keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.



EDIT: This only works in QGIS 3.x as @parent is not available in 2.x






share|improve this answer















I don't have QGIS on hand to try right now but I beljeve @parent returns a feature, so you want it as a a parameter for a function that takes a feature as input (e.g. geometry(<feature>)).



How about attribute()? You could try filter:=attribute(@parent,'field')>1000 - keep in mind the name of the field is in single quotes and case-sensitive here. IIRC.



EDIT: This only works in QGIS 3.x as @parent is not available in 2.x







share|improve this answer














share|improve this answer



share|improve this answer








edited Apr 13 at 11:52

























answered Oct 25 '18 at 6:33









she_weedsshe_weeds

1,479316




1,479316







  • 1





    Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.

    – Isaacson
    Oct 25 '18 at 6:44











  • using QGIS 3.6 it works

    – PieterB
    Apr 13 at 11:09











  • Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.

    – she_weeds
    Apr 13 at 11:51













  • 1





    Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.

    – Isaacson
    Oct 25 '18 at 6:44











  • using QGIS 3.6 it works

    – PieterB
    Apr 13 at 11:09











  • Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.

    – she_weeds
    Apr 13 at 11:51








1




1





Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.

– Isaacson
Oct 25 '18 at 6:44





Thanks for the idea. Unfortunately it's not working either. I'm not sure what value '@parent' is calling here, but it's not filtering anything, basically the formula just gives the total, unfiltered value. I've tried putting '@parent' in a variety of different places within the attribute expression but so far to no avail.

– Isaacson
Oct 25 '18 at 6:44













using QGIS 3.6 it works

– PieterB
Apr 13 at 11:09





using QGIS 3.6 it works

– PieterB
Apr 13 at 11:09













Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.

– she_weeds
Apr 13 at 11:51






Sorry @Isaacson I don't know how I missed your comment before. I should have added that this expression only works in Q 3.x and above. Answer now edited.

– she_weeds
Apr 13 at 11:51


















draft saved

draft discarded
















































Thanks for contributing an answer to Geographic Information Systems Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f300045%2freferring-to-the-parent-layer-with-aggregate-functions-in-qgis%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

QGIS export composer to PDF scale the map [closed] Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Print Composer QGIS 2.6, how to export image?QGIS 2.8.1 print composer won't export all OpenCycleMap base layer tilesSave Print/Map QGIS composer view as PNG/PDF using Python (without changing anything in visible layout)?Export QGIS Print Composer PDF with searchable text labelsQGIS Print Composer does not change from landscape to portrait orientation?How can I avoid map size and scale changes in print composer?Fuzzy PDF export in QGIS running on macSierra OSExport the legend into its 100% size using Print ComposerScale-dependent rendering in QGIS PDF output

PDF-ში გადმოწერა სანავიგაციო მენიუproject page