Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add verbose map to get /dataset/ endpoint #23655

Merged
merged 10 commits into from
Apr 26, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions superset/datasets/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
get_export_ids_schema,
GetOrCreateDatasetSchema,
)
from superset.exceptions import SupersetException
from superset.utils.core import parse_boolean_string
from superset.views.base import DatasourceFilter, generate_download_headers
from superset.views.base_api import (
Expand Down Expand Up @@ -248,6 +249,59 @@ class DatasetRestApi(BaseSupersetModelRestApi):
list_outer_default_load = True
show_outer_default_load = True

@expose("/<int:pk>", methods=["GET"])
@protect()
@safe
def get(self, pk: int, **kwargs: Any) -> Response:
"""Get a dataset
---
get:
description: >-
Get a dataset
parameters:
- in: path
schema:
type: integer
description: The dataset id
name: pk
responses:
200:
description: dataset
content:
application/json:
schema:
type: object
lilykuang marked this conversation as resolved.
Show resolved Hide resolved
400:
$ref: '#/components/responses/400'
401:
$ref: '#/components/responses/401'
422:
$ref: '#/components/responses/422'
500:
$ref: '#/components/responses/500'
"""
data = self.get_headless(pk, **kwargs)
try:
verbose_map = {}
payload = data.json
verbose_map = {"__timestamp": "Time"}
verbose_map.update(
{
o["metric_name"]: o["verbose_name"] or o["metric_name"]
for o in payload["result"]["metrics"]
}
)
verbose_map.update(
{
o["column_name"]: o["verbose_name"] or o["column_name"]
for o in payload["result"]["columns"]
}
)
payload["result"]["verbose_map"] = verbose_map
return payload
except SupersetException as ex:
return self.response(ex.status, message=ex.message)

@expose("/", methods=["POST"])
@protect()
@safe
Expand Down