nallwhy
`join_filter` in aggregates doesn’t seem to work as expected
I’m trying to sum only the copies_sold of :studio albums using an aggregate, but I’m not sure how to apply a filter to the joined records.
Here’s a simplified version of my resource:
def AshPg.Music.Artist do
...
aggregates do
sum :studio_copies_sold, [:albums], :copies_sold do
# Invalid reference albums.type
# filter expr(albums.type == :studio)
# Not working
join_filter [:albums], expr(type == :studio)
end
end
end
And here’s a test that creates an artist with multiple albums, where only one is of type :studio. The aggregate should return 1_000_000, but currently it’s returning the total sum of all album types.
defmodule AshPg.Music.ArtistTest do
...
test "solo_copies_sold" do
artist =
Music.create_artist!(%{
name: "250",
albums: [
%{title: "Rear Window", type: :single, copies_sold: 1000},
%{title: "Bang Bus", type: :single, copies_sold: 2000},
%{title: "뽕", type: :studio, copies_sold: 1_000_000}
]
})
%{studio_copies_sold: studio_copies_sold} = artist |> Ash.load!([:studio_copies_sold])
# The sum of copies sold for studio albums should be 1_000_000
assert studio_copies_sold == 1_000_000
end
end
join_filter doesn’t seem to have any effect.
https://github.com/nallwhy/ash_pg/commit/4a84d244554620cb4ff602e9dcaa12bcaccf591d
Is there a correct way to apply a filter to aggregates based on joined relationships? Any help would be appreciated.
Marked As Solved
zachdaniel
Creator of Ash
join_filter is for “intermediate” relationships, not the destination relationship.
sum :studio_copies_sold, [:albums], :copies_sold do
# Invalid reference albums.type
# filter expr(albums.type == :studio)
# Not working
filter expr(type == :studio)
end
1
Popular in Questions
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible.
total = 10
while total != 0
...
New
For example for a current url like
http://localhost:4000/cosmetic/products?_utf8=✓&query=perfume&page=2,
I would like to get:
...
New
What is the idiomatic way of matching for not nil in Elixir?
E.g.,
First way:
defp halt_if_not_signed_in(conn, signed_in_account) when...
New
How to bind a phoenix app to a specific ip address?
could not find anything about that, nowhere, unfortunately, but for me this is quite...
New
Hi, I’m just starting to build a side-project with Elixir and Phoenix and doing some basic test with Elixir alone.
What strikes me is th...
New
Good day to you all.
I have been struggling to get a query involving like and ilike to work.
Can anyone assist me on this, please?
pro...
New
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
Using vs code and installed ElixirLS: support and debugger.
And I got an error popped up on start up says
Failed to run ‘elixir’ comma...
New
Hi there,
I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
Other popular topics
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
Hi all,
I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage.
I’m trying to use Postgres...
New
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
New
Hi everyone,
One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this:
...
New
Got a question about when to concat vs. prepending items to list then reversing to achieve appending.
So i know lists boil down to [1 | ...
New
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!)
This post collects co...
New
Hello!
Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








