DuyDuc94
I have a list like this
selected_fields = [:inbox_count, :phone_number_count, :comment_count, ...] #this list contains fields of a table, and can change by the needed
group_query =
from(
ps in PageStatistic,
where: ps.id in ['1', '2']
group_by: fragment("date(?)", ps.hour)
select: %{
day: fragment("date(?)", ps.hour),
}
final_query =
select_fields
|> Enum.reduce(group_query, fn field, query ->
field_string = to_string(field)
select_merge(query, [ps], %{^field_string => fragment("sum(?)", field(ps, ^field))})
)
Repo.all(final_query)
but i got result like this
[
%{
:day => ~D[2023-01-01],
"inbox_count" => 3,
...
},
...
]
Is there any way make key “inbox_count” is an atom same as :day when query(i don’t want to loop the result to convert string to atom)
And is there any solution to select sum all fields that exist in select_fields when i make a query to database
P/s: i’m using Ecto v3.0
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security










First Post!- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
sodapopcan
You’re explicitly calling
field_string = to_string(field)so that’s why you’re getting a string. I don’t see any reason you need to do this so just remove that line.I’m missing something why you do need it or if you are ever in a situation where you have a string you don’t control and want it as an atom, you can write it like this:
PS, welcome to Elixir Forum!
Most Liked
fuelen
Upgrade to the latest version of ecto and use
^fieldinstead of^field_string.I created the issue on Github Unable to set keys dynamically using select_merge · Issue #4326 · elixir-ecto/ecto · GitHub
And it was resolved in this PR Don't send dynamic map keys to the database by greg-rychlewski · Pull Request #4327 · elixir-ecto/ecto · GitHub
sodapopcan
That sounds more like the value of the field you are trying to select into is the wrong type, although you are returning a bare map so that shouldn’t matter
I am, however, realizing that I mistakingly read Ecto 3.0 as 3.10, so that likely has something to do with it because I can’t for the life of me reproduce this in 3.11. Very sorry about that
