Skip to content
Snippets Groups Projects
Commit 1592a53d authored by Simon Belak's avatar Simon Belak
Browse files

Add cell analysis dashboard

parent 3904717b
Branches
Tags
No related merge requests found
(ns metabase.api.automagic-dashboards
(:require [compojure.core :refer [GET POST]]
(:require [cheshire.core :as json]
[compojure.core :refer [GET POST]]
[metabase.api
[card :as card.api]
[common :as api]]
......@@ -12,6 +13,7 @@
[database :refer [Database]]
[field :refer [Field]]
[metric :refer [Metric]]
[query :refer [Query]]
[segment :refer [Segment]]
[table :refer [Table]]]
[ring.util.codec :as codec]
......@@ -46,11 +48,33 @@
[id]
(-> id Segment api/check-404 magic/automagic-dashboard))
(api/defendpoint GET "/segment/:id/:prefix/:rule"
"Return an automagic dashboard analyzing segment with id `id`. using rule `rule`."
[id prefix rule]
(-> id
Segment
api/check-404
(magic/automagic-dashboard (str prefix "/" rule ".yaml"))))
(api/defendpoint GET "/question/:id/:cell-query"
"Return an automagic dashboard analyzing cell in question with id `id` defined by
query `cell-querry`."
[id cell-query]
(-> id Card api/check-404 :table_id Table magic/automagic-dashboard))
(-> (card.api/adhoc-query {:query {:filter (-> cell-query
codec/base64-decode
json/decode)}})
(magic/inject-segment (-> id Card api/check-404))
magic/automagic-dashboard))
(api/defendpoint GET "/question/:id/:cell-query/:prefix/:rule"
"Return an automagic dashboard analyzing cell in question with id `id` defined by
query `cell-querry` using rule `rule`."
[id cell-query prefix rule]
(-> (card.api/adhoc-query {:query {:filter (-> cell-query
codec/base64-decode
json/decode)}})
(magic/inject-segment (-> id Card api/check-404))
(magic/automagic-dashboard (str prefix "/" rule ".yaml"))))
(api/defendpoint GET "/metric/:id"
"Return an automagic dashboard analyzing metric with id `id`."
......
......@@ -49,12 +49,19 @@
metabase.models.query.QueryInstance
(table [query] (-> query :table_id Table))
(database [query] (-> query :database_id database))
(database [query] (-> query :database_id Database))
(query-filter [query] (-> query :dataset_query :query :filter))
(full-name [query] (str "ad-hoc question " (:name query)))
(url [query] (format "%sadhoc/%s" public-endpoint (-> query
json/encode
codec/base64-encode))))
codec/base64-encode)))
metabase.models.card.CardInstance
(table [card] (-> card :table_id Table))
(database [card] (-> card :database_id Database))
(query-filter [card] (-> card :dataset_query :query :filter))
(full-name [card] (str "question " (:name card)))
(url [card] (format "%squestion/%s" public-endpoint (:id card))))
(defmulti
^{:doc "Get a reference for a given model to be injected into a template
......@@ -470,7 +477,7 @@
(matching-rules rules)
(keep (partial apply-rule table))
first)]
{:url (str public-endpoint "table/" (:id table))
{:url (url table)
:title (:title dashboard)
:score (rule-specificity rule)
:description (:description dashboard)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment