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

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

Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given

Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221