Mapping is a process of defining how the fields contained in the data source are treated and presented within the component. For mapping in Flexmonster, you can use the Mapping Object which is a property of the Data Source.
The Mapping Object is available for all data sources but with some differences.
For JSON, CSV, and the custom data source API, it’s possible to define field data types and captions, group fields under separate dimensions, create multilevel hierarchies, and more. For SSAS and Mondrian data sources, it’s possible to set captions of dimensions and measures. For the data from Elasticsearch, it’s possible to customize hierarchies’ captions, formats, time zones, control fields’ visibility, and more.
We recommend using mapping instead of defining a meta-object for JSON or adding prefixes for CSV data since the former presents a powerful way to neatly separate a data source from its representation. Moreover, mapping provides more options than an approach with prefixes for CSV data.
For each field in the data source, you can set the following properties:
caption
(optional) – String. The hierarchy’s caption. type
(optional) – String. The field’s data type. Only for "json"
, "csv"
, and "api"
data source types. type
can be:"string"
– the field stores string data. It can be aggregated only with count
and distinctcount
aggregations."number"
– the field stores numerical data. It can be aggregated with all the available aggregations."month"
– the field stores months. Note that if the field stores month names only (in either short or full form), the field will be recognized by Flexmonster as a field of "month"
type automatically. If the field contains custom month names, specify its type as "month"
explicitly. "weekday"
– the field stores days of the week."date"
– the field stores a date. The field of this type is split into 3 different fields: Year, Month, Day."date string"
– the field stores a date. It can be formatted using the datePattern
option (default is "dd/MM/yyyy"
)."year/month/day"
– the field stores a date. It’s displayed as a multilevel hierarchy with the following levels: Year > Month > Day."year/quarter/month/day"
– the field is a date. It’s displayed as a multilevel hierarchy with the following levels: Year > Quarter > Month > Day."time"
– the field stores time. It can be formatted using the timePattern
option (default is "HH:mm:ss"
)."datetime"
– the field is a date. It can be formatted using the dateTimePattern
option (default is "dd/MM/yyyy HH:mm:ss"
). min
, max
, count
, and distinctcount
aggregations can be applied to it."id"
– the field is an id. The field of this type can be used for editing data. It’s not shown in the Field List."property"
– the field for setting member properties. This field is not shown in the Field List. For example, it can be used to associate productID
with a product
. See the example.hierarchy
(optional) – String. The hierarchy’s name. When configuring hierarchies, specify this property to set the field as a level of a hierarchy or as a member property of a hierarchy (in this case, the type
parameter should be set to "property"
). Only for "json"
, "csv"
, and "api"
data source types.parent
(optional) – String. The unique name of the parent level. This property is necessary to specify if the field is a level of a hierarchy and has a parent level. Only for "json"
, "csv"
, and "api"
data source types.folder
(optional) – String. The field’s folder. Folders are used to group several fields in the Field List. folder
supports nesting via /
(e.g., "Folder/Subfolder/"
). Only for "json"
, "csv"
, and "api"
data source types.aggregations
(optional) — Array of strings. It represents the list of aggregation functions that can be applied to the current measure.filters
(optional) – Boolean. It allows enabling and disabling the UI filters for a specific hierarchy. When set to false
, the UI filters are disabled. Default value: true
.visible
(optional) – Boolean. When set as false
, hides the field from the Field List. Only for "elasticsearch"
, "csv"
, and "api"
data source types. interval
(optional) – String. Allows aggregating dates by the given interval. The interval
property can be used in the following ways: "elasticsearch"
data source type."date string"
and "datetime"
field types. Supported date intervals are the following: "d"
for days, "h"
for hours, "m"
for minutes, and "s"
for seconds (e.g., "1d"
, "7h"
, "20m"
, "30s"
). The maximum value for the interval is "1d"
. Only for "csv"
and "json"
data source types. time_zone
(optional) – String. Used for date histogram. You can specify timezones as either an ISO 8601 UTC offset (e.g. +01:00
or -08:00
) or as a timezone ID as specified in the IANA timezone database, such as `America/Los_Angeles`. Only for "elasticsearch"
data source type. Check out the example.format
(optional) – String. Used to format different types of date fields. format
can be used in the following ways:"elasticsearch"
data source type."date string"
field type ("date"
in custom data source API), it allows overriding datePattern
set in the Options Object for a certain field. The pattern string is the same as in the datePattern
option (i.e. "dd/MM/yyyy"
). Only for "json"
, "csv"
, and "api"
data source types. "datetime"
field type, it allows overriding dateTimePattern
set in the Options Object for a certain field. The pattern string is the same as in the dateTimePattern
option (i.e. "dd/MM/yyyy HH:mm:ss"
). Only for "json"
and "csv"
data source types. "time"
field type, it allows overriding timePattern
set in the Options Object for a certain field. The pattern string is the same as in the timePattern
option (i.e. "HH:mm:ss"
). Only for "json"
and "csv"
data source types.min_doc_count
(optional) – Number. Only for "elasticsearch"
data source type. Used for date histogram. Can be used to show intervals with empty values (min_doc_count: 0
). Default value: 1
(empty intervals are hidden).Another way to define how the fields are displayed in the report is by setting these configurations right in the data source. Please note that this approach is available only for CSV and JSON data sources. For more details, please refer to the Data types in CSV and Data types in JSON articles. It also should be noted that there are certain limitations in the case of CSV data source – not all the field properties can be customized using prefixes.
Thus, we strongly recommend preferring the Mapping Object to other types of fields’ customization.
1) Creating multilevel hierarchies in JSON:
mapping: {
"Color": {
type: "string"
},
"Country": {
type: "string",
hierarchy: "Geography",
},
"State": {
type: "string",
hierarchy: "Geography",
parent: "Country"
},
"City": {
type: "string",
hierarchy: "Geography",
parent: "State"
},
"Price": {
type: "number"
}
}
Try the live demo on JSFiddle.
2) Setting custom captions and field data types, creating multilevel hierarchies in the CSV data source:
mapping: {
"Order ID": { "type": "string" },
"Month": { "type": "month" },
"Company Name": { "type": "string" },
"Customer": { "type": "string" },
"region": {
"caption": "Region",
"type": "string",
"hierarchy": "Geography"
},
"State": {
"type": "string",
"parent": "region",
"hierarchy": "Geography"
},
"City": {
"type": "string",
"parent": "State",
"hierarchy": "Geography"
},
"Salesperson": { "type": "string" },
"Payment Method": { "type": "string" },
"Category": { "type": "string" },
"Name": { "type": "string", "caption": "Product Name" },
"price": { "type": "number", "caption": "Unit Price" },
"Quantity": { "type": "number" },
"Revenue": { "type": "number" },
"Shipping Cost": { "type": "number" }
}
Try it on JSFiddle.
3) Setting custom captions and grouping fields in separate folders in the JSON data source:
mapping: {
"Color": {
caption: "color"
},
"Country": {
caption: "MyCountry",
folder: "Place"
},
"State": {
caption: "MyState",
folder: "Place"
},
"City": {
caption: "MyCity",
folder: "Place"
},
"Price": {
type: "number",
caption: "MyPrice"
},
"Quantity": {
type: "number",
caption: "MyQuantity"
}
}
See the live demo on JSFiddle.
4) Specifying custom captions for hierarchies and measures for SSAS:
mapping: {
"[Geography].[Geography]": {
caption: "My Geography"
},
"[Product].[Category]": {
caption: "My Category"
}
}
See the live demo on JSFiddle.
5) Setting the custom captions for hierarchies and measures for Mondrian:
mapping: {
"[Store]": {
caption: "My Store"
},
"[Measures].[Profit]": {
caption: "My Profit"
}
}
Try it on JSFiddle.