Generic composable Ecto-Abfrage mit dynamischem Feldnamen im Abfrageausdruck

Ich versuche zuzulassen, dass ein Feldname übergeben und in einem Ecto-Abfrageausdruck dynamisch ausgeführt wird, wie folgt:

def count_distinct(query, field_name) when is_binary(field_name) do
  query
  |> select([x], count(Map.fetch!(x, field_name), :distinct))
end

Ich erhalte jedoch diesen Kompilierungsfehler:

(Ecto.Query.CompileError) `Map.fetch!(x, field_name)` is not a valid query expression

Gibt es eine Möglichkeit, dies zu erreichen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage