Общий составной Ecto-запрос с динамическим именем поля в выражении запроса

Я пытаюсь разрешить передачу имени поля и динамическое выполнение его в выражении запроса Ecto, например:

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

Тем не менее, я получаю эту ошибку компиляции:

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

Есть ли способ сделать это?

Ответы на вопрос(1)

Ваш ответ на вопрос