Add Folders in Datasets to group Fields

Introduction
You will most probably recognize this. You open a dataset, and you need to browse through hundreds of fields to find the field you actually need. Also some field names might be very close to each other.
When using naming conventions, you might get away with a better experience. But what if you could organize the dimensions and measures in folders?

Feature suggestion
As an Analyst, I want to be able to organize my fields in groups, for easier browsabiliy.

Example folders:

  • Revenue metrics
  • Leadtime metrics
  • Operation metrics
  • etc etc

By having the ability to organize your fields in such a way, end users who can build dashboards will have a much better experience

I suggested the same directly - this would be real help in organising models

As a workaround to this, you could split it into multiple models, and join those models up again in the dataset with a relationship between them

When you have multiple models in a dataset, Holistics will group the measure/dimensions by the source model.

You could create…
model_revenue = select key, revenue from base_table
model_leadtime = select key, leadtime from base_table
model_operation = select key, operation from base_table

In model_leadtime & model_operation you could then set the attribute for field key as hidden = true to prevent the key(s) showing multiple times.

Then create the dataset with a relationship on key

When your users browse the dataset, the measures/dimensions will be grouped per the underlying model.

Ours looks something like this…

image

2 Likes

Hi David,

Thank you for your suggestion.
I think it would be a very rough workaround just for achieving those folders :slight_smile:

You would still have in the end cross-model metrics that touch multiple models.

Most people that have a data warehousing use a Star Schema, and that has one table in the center connecting to other tables. Using your approach might introduce some complexity issues with the SQL generator when you do not set your relations correctly.

What my honest opinion is, that workarounds are only fine when they don’t introduce any issues/limitations.

While the feature request is very simple, the workaround introduces a lot of work and possibly more limitations

If you’re currently surfacing a single model in your dataset with hundreds of fields, then configuring a few separate models to break this out to be honest feels like a sensible thing to do anyway.

That said, I agree being able to group them would be useful - but it’s important to think about the best way/place to do this.

Personally, I would suggest this be configured within the model, as part of the measure/dimension config.

Something like this…

  dimension sales_value {
    label: "Sales Value"
    type: "number"
    definition: @sql {{ sales_volume }} * {{ sale_price }};;
    hidden: false
    format: "[$$]#,###"
    dataset_group: "Sales"
  }

You would then want to have some settings at the dataset level to then control the behaviour, such as sort order of the groups, and sort order of the dimensions in the groups

something like

import '../models/calendar.model.aml' {
  calendar as model__calendar
}
import '../models/sales.model.aml' {
  sales as model__sales
}

Dataset daily_sales {
  label: "Daily Sales Records"
  description: ""
  data_source_name: "my_datasource"
  models: [
    model__calendar,
    model__sales
  ]
  relationships: [rel(sales.date > calendar.date, true)]
  dataset_grouping: [default | custom] #should it use the custom grouping from the dataset or standard grouping?
  dataset_group_ordering: [alpha_desc | alpha_asc | etc] #how should it order the groups
  group_dim_ordering: [alpha_desc | alpha_asc | etc] #how should it order the dims with in the group
}
4 Likes

Hi @david-ri ,

I think your example AML completely makes sense and very intuitive also. :+1: