7.4 KiB
Meta collections
dbMango uses meta collections to store pivot definitions and user-specific settings.
Meta collections include:
- CalculatedFields - formulas for calculated fields
- FieldsMap - various field information
- FieldDescriptors - various UI related information bout pivot columns
- Lookups - lookup definitions
- PredefinedPivots - the main storage for pivot definitions
- PredefinedPivots-[USERNAME] - pivot definitions only visible for USERNAME
CalculatedFields
The CalculatedFields object in meta collection responsible for holding formulas for generated (calculated) fields that can be added to queries. In a way these are macros to be reused. Below is the JSON format for a calculated field:
Formula field have MongoDB aggregation pipeline expression format.
It must use @ instead of $ to avoid conflicts with MongoDB operators, field names are serialized with # instead of ..
JSON Format
{
"_id" : "CalculatedFields",
"FieldName1" : { // field name corresponding to calculated field name
{
"Formula": { JSON }, // The formula defining the calculated field using expression JSON syntax.
"DrillDown": "string", // The drill-down logic for the field (e.g., a MongoDB query or filter).
"LookupDef": ["string", ...], // An optional array of lookup definitions associated with the field.
"AggregationOperator": "string" // The aggregation operator (e.g., "$sum", "$avg") to be used in aggregation pipelines.
},
...
}
Field Descriptions
-
Formula:- A string representing the formula for the calculated field.
- Example:
"$sum: $Amount".
-
DrillDown:- A string defining the drill-down behavior for the field.
- Example: A MongoDB query or filter to retrieve detailed data.
-
LookupDef:- An optional array of strings representing lookup definitions.
- These lookups may be used to enrich or map data for the calculated field.
-
AggregationOperator:- A string specifying the aggregation operator to be applied within aggregation pipeline.
- Common values:
"$sum","$avg","$max", etc.
Example JSON
{
"_id" : "CalculatedFields",
"AcctCcy" : {
"Formula" : {
"@cond" : {
"else" : "@Currency",
"if" : {
"@gte" : [{
"@strLenCP" : "@Currency"
}, 6]
},
"then" : {
"@substrCP" : ["@Currency", 3, 3]
}
}
}
},
"Count" : {
"Formula" : {
"@literal" : 1
}
}
}
FieldMap
FieldMap object is designed to represent metadata about a field in a pivot table. Below is the JSON format:
{
"_id" : "FieldsMap",
"FieldName1" : {
{
"Purpose": "string", // (string) The purpose of the field, represented by the `PivotFieldPurpose` enum.
"Type": "string" // (string) The fully qualified name of the field's data type (e.g., "System.String").
},
...
}
Field Descriptions
-
Purpose:-
Represents the purpose or role of the field in the pivot table.
-
Defined by the
PivotFieldPurposeenum, which likely includes values such asKey,Data, orLookup. -
Possible
Purposevalues:
-
Data:- Represents a field that contains the primary data to be aggregated or analyzed in the pivot table.
- Example: Sales amount, quantity, or revenue.
-
primary key 1:- Represents the first primary key field used to uniquely identify a record or group in the data.
- Example: A unique identifier such as
OrderIDorCustomerID.
-
primary key 2:- Represents the second primary key field, often used in conjunction with
PrimaryKey1to form a composite key. - Example: A secondary identifier such as
ProductIDin a dataset whereOrderIDandProductIDtogether form a unique key.
- Represents the second primary key field, often used in conjunction with
-
Key:- Represents a general key field used for grouping or categorizing data in the pivot table.
- Example: Fields like
Region,Department, orCategory.
-
Info:- Represents an informational field that provides additional context or metadata but is not directly used for aggregation or grouping.
- Example: Descriptive fields like
DescriptionorComments.
-
Hidden:- Represents a field that is not displayed in the pivot table but may still be used internally for calculations or filtering.
- Example: Fields used for intermediate calculations or backend logic.
-
-
Type:- A string representing the fully qualified name of the field's data type (e.g.,
System.String,System.Int32). - This is used to dynamically determine the type of the field at runtime.
- A string representing the fully qualified name of the field's data type (e.g.,
Example JSON
Here is an example of a SingleFieldMapping object serialized to JSON:
{
"_id" : "FieldsMap",
"AcctCcy" : {
"Purpose" : "key",
"Type" : "string"
},
"AtRisk" : {
"Purpose" : "data",
"Type" : "double"
},
"BlendImpact" : {
"Purpose" : "data",
"Type" : "double"
},
"Book" : {
"Purpose" : "primary key 2",
"Type" : "string"
}
}
FieldDescriptors
FieldDescriptors object used to define metadata for pivot table columns. Its purpose:
- Matching column names using regular expressions.
- Customizing the appearance of columns (background and alternate background colors).
- Specifying value formatting for display.
Below is the JSON format based on its properties:
JSON Format
{
"_id" : "FieldDescriptors",
"Fields" : [
{
"NameRegex": "string", // (string) A regular expression pattern for matching column names.
"Background": "string", // (string, nullable) The background color of the column (e.g., "White", "Red").
"AlternateBackground": "string", // (string, nullable) The alternate background color for the column.
"Format": "string" // (string, nullable) The format string for displaying column values.
},
...
]
}
Field Descriptions
-
NameRegex:- A string representing a regular expression pattern used to match column names.
- Example:
"^Column.*"matches all column names starting with "Column".
-
Background:- A string representing the background color of the column.
- If
null, the default color is"White". - Example:
"Blue","Red".
-
AlternateBackground:- A string representing the alternate background color for the column.
- If
null, the default color is"White". - Example:
"LightGray".
-
Format:- A string representing the format for displaying column values.
- Example:
"C2"for currency with two decimal places,"P0"for percentages with no decimals.
Example JSON
{
"_id" : "FieldDescriptors",
"Fields" : [{
"Background" : "#54440f57",
"Format" : "",
"NameRegex" : "Book$|^Ccy$|.*\\WCcy$|^Currency|.*\\WCurrency|Location|Layer|Desk|Portfolio"
}, {
"Background" : "#113f4857",
"Format" : "N0",
"NameRegex" : "Unexplained|RiskBasedUnexplained"
}
]
}
PredefinedPivots
PredefinedPivots used to store pivot information. There is no need to edit it manually - there is a UI for it.
If you want more details, you can refer to PivotDefinition.
PredefinedPivots-[USERNAME]
These objects uses the same format as PredefinedPivots. Pivots defined here will only be visible to USERNAME.