/dimension/list
- Usage: List Dimensions
- JSON Input:
{ "prefix": "string" } prefix: optional
/dimension/get
- Usage: Get Dimensions
- JSON Input:
{ "name": "dim_name" }
/dimension/set
- Usage: Set Dimensions
- JSON Input:
{
"overwrite_mode" : "False", // Default, append mode
"name": "Version",
"elements": [
"Actual",
"Budget",
"Forecast"
],
"edges": [ ] // if defined, then overwrite old definition in system
}
or
{
"overwrite_mode" : "True",
"name": "Version",
"elements": [
{"name": "Actual", "type": "N", "index": 1},
{"name": "Budget", "type": "N", "index": 2},
{"name": "Forecast", "type": "N", "index": 3}
]
}
Or
{
"name": "Year",
"elements": [
"All_Years",
"FY23",
"FY24",
"FY25",
"FY26",
"FY27"
],
"edges": [
["All_Years", "FY23"],
["All_Years", "FY24"],
["All_Years", "FY25"],
["All_Years", "FY26"],
["All_Years", "FY27"]
]
}
Or
{
"name": "Month",
"elements": [
"Full_Year",
"Q1", "Q2", "Q3", "Q4",
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
],
"edges": [
["Full_Year", "Q1"],
["Full_Year", "Q2"],
["Full_Year", "Q3"],
["Full_Year", "Q4"],
["Q1", "Jan"],
["Q1", "Feb"],
["Q1", "Mar"],
["Q2", "Apr"],
["Q2", "May"],
["Q2", "Jun"],
["Q3", "Jul"],
["Q3", "Aug"],
["Q3", "Sep"],
["Q4", "Oct"],
["Q4", "Nov"],
["Q4", "Dec"]
]
}
Or
{
"name": "Measure",
"elements": [
"Sales",
"COGS",
"Gross Profit",
"Admin expenses",
"R&D expenses",
"EBIT",
"Finance cost",
"EBT",
"Income tax",
"Net Profit"
],
"edges": [
["Net Profit", "Income tax", -1],
["Net Profit", "EBT"],
["EBT", "Finance cost", -1],
["EBT", "EBIT"],
["EBIT", "R&D expenses", -1],
["EBIT", "Admin expenses", -1],
["EBIT", "Gross Profit"],
["Gross Profit", "COGS", -1],
["Gross Profit", "Sales"]
]
}
/dimension/load
- Usage: Load Dimension From CSV
- JSON Input:
// file_path: relative path to instance folder, use “/” or “\\” on windows // type: "hierarchy_levels" or “parent_child” - hierarchy_levels indicates hierarchy / wide-table mode; - parent_child indicates long-table mode, where the data source has only two columns (child, parent). The hierarchy depth is not fixed (ragged hierarchy). Syntax: { "dimension_name": "Product", "overwrite_mode": true, "source": { "file_path": "Imports/products.csv", "encoding": "utf-8", "has_header": true, "delimiter": "," }, "mapping": { "hierarchy": { "type": "hierarchy_levels", "columns": ["Product Code", "Sub Category", "Category"], "weight_column": "Weight" // default is 1 }, // if no attribute, remove below items or leave them in blank "attributes": { "Alias": "Product Name", "Color": "Color", "Price": "Price" }, "attribute_types": { "Price": "Numeric", "Color": "String" } } } Sample: { "dimension_name": "Product", "overwrite_mode": true, "source": { "file_path": "Source/Products.csv", "encoding": "utf-8", "has_header": true, "delimiter": "," }, "mapping": { "hierarchy": { "type": "hierarchy_levels", "columns": ["Product", "Category", "Top"] } } } Or { "dimension_name": "Product_with_Attr", "overwrite_mode": true, "source": { "file_path": "Source/Product_attr.csv", "encoding": "utf-8", "has_header": true, "delimiter": "," }, "mapping": { "hierarchy": { "type": "hierarchy_levels", "columns": ["Product", "ProductCategory", "Top"] } "attributes": { "Category": "Category" }, "attribute_types": { "Category": "String" } } } Or { "dimension_name": "month_with_attr", "overwrite_mode": true, "source": { "file_path": "Source/months_with_attr.csv", "encoding": "utf-8", "has_header": true, "delimiter": "," }, "mapping": { "hierarchy": { "type": "hierarchy_levels", "columns": ["Month", "Quarter", "Top"] }, "attributes": { "Prev": "Prev", "Next": "Next", "ChineseName": "ChineseName" }, "attribute_types": { "Prev": "String", "Next": "String", "ChineseName": "Alias" } } }
/dimension/extract_hierarchy
- Usage: Extract Dimension Hierarchy into Flat
- JSON Input:
// support "json_records","json_compact","csv" // file_folder: relative folder to instance main folder, default “Export”, if absolute folder, it must be under instance main folder; filename like "Dim_<dim_name>_YYYYMMDD_HHMMSS.csv" { "dimension": "dim_name", "output_format": "csv", "csv_sep": ",", // only for csv "file_folder": "string" }
/dimension/reindex
- Usage: Reindex Dimension
- JSON Input:
Syntax: Auto Reindex { "dimension": "Region", "mode": "alpha", // "alpha" | "numeric" | "manual" "sort_order": "desc" // "asc" (default) | "desc" } Manual Reindex // elements sort according to order_list, for those not in list, then sort according to "sort_order" with mode "alpha" { "dimension": "Month", "mode": "manual", "sort_order": "asc", // "asc" | "desc", default "asc" "order_list": [ "Total_Year", "Q1", "Jan", "Feb", "Mar", "Q2", "Apr", "May", "Jun", "Q3", "Jul", "Aug", "Sep", "Q4", "Oct", "Nov", "Dec" ] } Sample: { "dimension": "Month", "mode": "manual", "sort_order": "asc", "order_list": [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Q1", "Q2", "Q3", "Q4", "Total_Year" ] }
/dimension/delete
- Usage: Delete Dimension
- JSON Input:
{ "name": "dim_name" }
/dimension/attribute/list
- Usage: List Attribute
- JSON Input:
{ "dimension": "dim_name" }
/dimension/attribute/get
- Usage: Get Attribute
- JSON Input:
{ "dimension": "dim_name" } Or { "dimension": "dim_name", "attribute" : "attr_name" }
/dimension/attribute/set
- Usage: Set Attribute
- JSON Input:
{ "dimension": "Measure", "attribute": "Accrued_Category", "type": "String", "items": { "Sales": "Credit", "COGS": "Debit", "Gross Profit": "Credit", "Admin expenses": "Debit", "R&D expenses": "Debit", "EBIT": "Credit", "Finance cost": "Debit", "EBT": "Credit", "Income tax": "Debit", "Net Profit": "Credit" } } or { "dimension": "Month", "attribute": "EnglishName", "type": "Alias", "items": { "Jan": "January", "Feb": "February", "Mar": "March", "Apr": "April", "May": "May", "Jun": "June", "Jul": "July", "Aug": "August", "Sep": "September", "Oct": "October", "Nov": "November", "Dec": "December" } }
/dimension/attribute/set_batch
- Usage: Set Attribute in Batch
- JSON Input:
{ "dimension": "Month", "attributes": [ { "name": "EnglishName", "type": "Alias", "items": { "Jan": "January", "Feb": "February", "Mar": "March", "Apr": "April", "May": "May", "Jun": "June", "Jul": "July", "Aug": "August", "Sep": "September", "Oct": "October", "Nov": "November", "Dec": "December" } }, { "name": "ChineseName", "type": "Alias", "items": { "Jan": "一月", "Feb": "二月", "Mar": "三月", "Apr": "四月", "May": "五月", "Jun": "六月", "Jul": "七月", "Aug": "八月", "Sep": "九月", "Oct": "十月", "Nov": "十一月", "Dec": "十二月" } }, { "name": "MonthNum", "type": "Numeric", "items": { "Jan": 1, "Feb": 2, "Mar": 3, "Apr": 4, "May": 5, "Jun": 6, "Jul": 7, "Aug": 8, "Sep": 9, "Oct": 10, "Nov": 11, "Dec": 12 } }, { "name": "Prev", "type": "String", "items": { "Jan": "Dec", "Feb": "Jan", "Mar": "Feb", "Apr": "Mar", "May": "Apr", "Jun": "May", "Jul": "Jun", "Aug": "Jul", "Sep": "Aug", "Oct": "Sep", "Nov": "Oct", "Dec": "Nov" } }, { "name": "Next", "type": "String", "items": { "Jan": "Feb", "Feb": "Mar", "Mar": "Apr", "Apr": "May", "May": "Jun", "Jun": "Jul", "Jul": "Aug", "Aug": "Sep", "Sep": "Oct", "Oct": "Nov", "Nov": "Dec", "Dec": "Jan" } } ] }
/dimension/attribute/delete
- Usage: Delete Attribute
- JSON Input:
{ "dimension": "dim_name", "attribute" : "attr_name" }
/dimension/subset/list
- Usage: List Subset
- JSON Input:
{ "dimension": "dim_name" }
/dimension/subset/get
- Usage: Get Subset
- JSON Input:
{ "dimension": "dim_name", "subset": "subset_name" }
/dimension/subset/set
- Usage: Set Subset
- JSON Input:
Static subset { "dimension": "dim_name", "name": "subset_name", "mode": "static", "elements": [ "string" ] } Dynamic subset { "dimension": "dim_name", "name": "subset_name", "mode": "dynamic", "expression": "string" } Expression Sample: "expression": "Report == 'IS' " "expression": "Type != 'Expense' " "expression": "MonthNum <= 6 " "expression": "Report == 'IS' and AccountType == 'Revenue' " "expression": "Department in ['Sales', 'Marketing'] " "expression": "`Chinese Name` == '一月' " "expression": "Level == 0" "Level == 0 and Index <= 6" //by element index Note: // conditional operators follow Python-style syntax. // Use double equals (==) for comparison // use "`" if variable name contains space Sample: { "dimension": "Month", "name": "Year&Months", "mode": "static", "elements": [ "Full_Year", “Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov","Dec" ] } Or { "dimension": "Measure", "name": "Debit_Account", "mode": "dynamic", "expression": "Accrued_Category == 'Debit' " }
/dimension/subset/resolve
- Usage: Resolve Subset
- JSON Input:
{ "dimension": "dim_name", "subset": "subset_name" }
/dimension/subset/delete
- Usage: Delete Subset
- JSON Input:
{ "dimension": "dim_name", "subset": "subset_name" }
/cube/list
- Usage: List Cube
- JSON Input:
{ "prefix": "string" // prefix: optional }
/cube/create
- Usage: Create Cube
- JSON Input:
{ "name": "cube_name", "dimensions": [ "dim_name_1", "dim_name_2", "dim_name_3", "dim_name_4", "dim_name_5", "dim_name_6" ] } Sample { "name": "IncomeSheet", "dimensions": [ "Version", "Region", "Department", "Year", "Month", "Measure" ] }
/cube/get
- Usage: Get Cube
- JSON Input:
{ "names": "cube_name" }
/cube/delete
- Usage: Delete Cube
- JSON Input:
{ "names": "cube_name" }
/cube/save
- Usage: Save Cube
- JSON Input:
{ "names": "cube_name" }
/cube/extract_hierarchies
- Usage: Extract Dimension Hierarchies by Cube
- JSON Input:
// support "json_records","json_compact","csv" // file_folder: relative folder to instance main folder, default “Export”, if absolute folder, it must be under instance main folder; filename like "Dim_<dim_name>_YYYYMMDD_HHMMSS.csv" { "cubes": "cube_name", // cube or list of cubes, None for all "output_format": "csv", "csv_sep": ",", "file_folder": "string" }
/view/list
- Usage: List View
- JSON Input:
{ "cube": "cube_name" }
/view/get
- Usage: Get View
- JSON Input:
{ "cube_name": "cube_name", "views": "view_name" }
/view/set
- Usage: Set View
- JSON Input:
// Similar to View_grid // "selection" in row/column/titles share same input of below: // - single element, subset, or list of elements, subsets, and mix of both, subset should be expressed as "dim:subset"; // - if multiple elements in titles, then consolidated data will be displayed; // - Blank or null or "All" or dimension omitted, mean to list all elements including the Top level element, suitful to row and column; But for titles, it's easy leading to duplication of summary. Please be careful on it, not suggest for it. Sample: { "name": "test", "cube_name": "IncomeSheet", "rows": [ { "dimension": "Region", "selection": ["Shanghai", "Beijing", "Region:WestChina"], "hidden": false } // adhoc与subset混合型 ], "columns": [ { "dimension": "Month", "selection": "All", "hidden": false } ], "titles": [ { "dimension": "Department", "selection": "Department:ASR", "hidden": false }, { "dimension": "Version", "selection": "Actual", "hidden": false }, { "dimension": "Year", "selection": "FY25", "hidden": false }, { "dimension": "Measure", "selection": "Sales", "hidden": false } ] } or { "cube_name": "IncomeSheet", "name": "Sales of FY25 by Region", "rows": [ { "dimension": "Region", "selection": "Region:Region_Level" } ], "columns": [ { "dimension": "Month", "selection": "Month:Year&Months" } ], "titles": [ {"dimension": "Version", "selection": "Actual"}, {"dimension": "Year", "selection": "FY25"}, {"dimension": "Department", "selection": "Department:LoS_Level"}, {"dimension": "Measure", "selection": "Sales"} ] } or { "cube_name": "IncomeSheet", "name": "Sales of FY25 by Region and department", "rows": [ { "dimension": "Region" } ], "columns": [ { "dimension": "Department", "selection": "Department:Los_Level" } ], "titles": [ { "dimension": "Version", "selection": "Actual"}, { "dimension": "Year", "selection": "FY25"}, { "dimension": "Month", "selection": "Full_Year"}, { "dimension": "Measure", "selection": "Sales"} ] } or { "cube_name": "IncomeSheet", "name": "Sales of FY25 by City and BU", "rows": [ { "dimension": "Region", "selection": "Region:City_Level" } ], "columns": [ { "dimension": "Department", "selection": "Department:BU_Level"} ], "titles": [ { "dimension": "Version", "selection": "Actual"}, { "dimension": "Year", "selection": "FY25"}, { "dimension": "Month", "selection": "Full_Year"}, { "dimension": "Measure", "selection": "Sales"} ] } or Multi-index view { "cube_name": "IncomeSheet", "name": "Sales of FY25 by City and Quarter-BU", "rows": [ { "dimension": "Region", "selection": "Region:City_Level" } ], "columns": [ { "dimension": "Month", "selection": "Month:Year&Quarters"}, { "dimension": "Department", "selection": "Department:BU_Level"} ], "titles": [ { "dimension": "Version", "selection": "Actual"}, { "dimension": "Year", "selection": "FY25"}, { "dimension": "Measure", "selection": "Sales"} ] }
/view/delete
- Usage: Delete View
- JSON Input:
{ "cube_name": "cube_name", "views": "view_name" }
/cube/rule/get
- Usage: Get Rule in JSON Style
- JSON Input:
{ "cube_name": "cube_name", }
/cube/rule/set
- Usage: Set Rule in JSON Style
- JSON Input:
// JSON style: each rule in "" and end with "," Syntax: { "cube_name": "cube_name", "rules": [ rule_string1, rule_string2, rule_string3 ] } Sample: { "cube_name": "IncomeSheet", "rules": [ "['COGS'] = N: ['Sales'] * 0.5", "['Income tax'] = N: ['EBT'] * 0.1" ] } or { "cube_name": "IncomeSheet", "rules": [ "['COGS'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure)", "['Admin expenses'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure)", "['R&D expenses'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure)", "['Finance cost'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure)", "['Income tax'] = N: ['EBT'] * db('CostAssumption', !Version, !Year, !Measure)" , "['FY25','Jan','Forecast','Sales'] = N: db('IncomeSheet', 'Actual', !Region, !Department, !Year, !Month, !Measure)", "['FY25','Feb','Forecast','Sales'] = N: db('IncomeSheet', 'Forecast', !Region, !Department, !Year, 'Jan', !Measure)", "['FY25','Mar','Forecast','Sales'] = N: db('IncomeSheet', 'Forecast', !Region, !Department, !Year, 'Jan', !Measure) * 1.5", "['FY25','Apr','Forecast','Sales'] = N: db('IncomeSheet', !Version, !Region, !Department, !Year, dimnm('Month', dimix('Month', !Month)-1), !Measure)", "['FY25','May','Forecast','Sales'] = N: db('IncomeSheet', !Version, !Region, !Department, !Year, dimnm('Month', dimix('Month', !Month)-1), !Measure) * 1.1", "['FY25','Jun','Forecast','Sales'] = N: ( db('IncomeSheet', !Version, !Region, !Department, !Year, dimnm('Month', dimix('Month', !Month)-1), !Measure) + db('IncomeSheet', !Version, !Region, !Department, !Year, dimnm('Month', dimix('Month', !Month)-2), !Measure) + db('IncomeSheet', !Version, !Region, !Department, !Year, dimnm('Month', dimix('Month', !Month)-3), !Measure) )/3 ", "['FY25',{'Jul','Aug','Sep'},'Forecast','Sales'] = N: db('IncomeSheet', !Version, !Region, !Department, !Year, ATTRS('Month', !Month,'Prev'), !Measure) * 1.2" ] }
/cube/rule/view_raw
- Usage: View Rule in TM1 Style
- JSON Input:
{ "name": "cube_name" }
/cube/rule/edit_raw
- Usage: Edit Rule in TM1 Style
- Input:
- Cube_name: “cube_name”
- Rule: string of below, each rule ends by “;”, sames as TM1
- all rules should be input here because it will overwrite rule definition of that cube once run
['COGS'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure); ['Admin expenses'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure); ['R&D expenses'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure); ['Finance cost'] = N: ['Sales'] * db('CostAssumption', !Version, !Year, !Measure); ['Income tax'] = N: ['EBT'] * db('CostAssumption', !Version, !Year, !Measure); ['FY25', 'Forecast','Sales'] = N: if( !Month == 'Jan', ['Actual'], db('IncomeSheet', 'Forecast', !Region, !Department, !Year, DIMNM('Month', DIMIX('Month', !Month)-1), !Measure) * 1.1 );
/cell/read
- Usage: Read Cell
- JSON Input:
{ "cube_name": "IncomeSheet", "coordinates": [ "Actual", "Beijing", "TAX501", "FY25", "jan", "COGS" ] }
/cell/write
- Usage: Write Cell
- JSON Input:
{ "cube_name": "IncomeSheet", "coordinates": [ "Actual", "Beijing", "TAX501", "FY25", "jan", "COGS" ], "value": 2010.0 }
/cube/load
- Usage: Write Cells in Batch with Dict input
- JSON Input:
// "overwrite": false (acuumulate mode), true (overwrite mode) { "cube_name": "IncomeSheet", "overwrite": false, // false: Incremental mode "data": [ { "Version": "actual", "Entity": "shanghai", "CostCenter": "ADV310", "Year": "FY25", "Month": "jan", "Account": "COGS", "Value": 1848.0 }, { "Version": "actual", "Entity": "shanghai", "CostCenter": "ASR110", "Year": "FY25", "Month": "jan", "Account": "COGS", "Value": 1234.5 }, { "Version": "budget", "Entity": "shanghai", "CostCenter": "TAX501", "Year": "FY25", "Month": "feb", "Account": "COGS", "Value": 2000.0 } ] }
/cube/batch_write
- Usage: Write Cells in Batch (Same as /cube/load) with coordinates input
- JSON Input:
{ "cube_name": "IncomeSheet", "overwrite": false, // false (acuumulate mode) "batch_data": [ { "coordinates": ["actual", "shanghai", "ADV310", "FY25", "jan", "COGS"], "value": 1848.0 }, { "coordinates": ["actual", "shanghai", "ASR110", "FY25", "jan", "COGS"], "value": 1234.5 }, { "coordinates": ["budget", "shanghai", "TAX501", "FY25", "feb", "COGS"], "value": 2000.0 } ] }
/cube/load_csv
- Usage: load data from CSV
- JSON Input:
Syntax //"file_path": relative path to instance folder, use "/" or "\\" on windows; // "has_header": if false, use column number, 1/2/3, instead; //"overwrite": false (acuumulate mode), true (overwrite mode); //"mode": "wide" means flat table, "long" means long table; // "transformations": use Python expression // example:take "Jun" from "7-Jun" // "Order Date": "x.split('-')[1]", // example:trim for above // "Order Date": "x.split('-')[1].strip()", // example:convert amount "$1,000.00" to number // "Amount": "float(x.replace('$', '').replace(',', ''))", // example: extract first 3 chars // "Product Code": "x[:3]" { "cube_name": "cube_name", "source": { "file_path": "CSV file", "has_header": true, "encoding": "utf-8", "overwrite": true }, "mapping": { "mode": "wide", // Ignore columns list "ignore_columns": ["Sales Staff"], // 2. Constant values "constants": { "Year_Column": "FY26", // temporary variable "Scenario_Column": "Budget" // temporary variable }, // 3. Transformed values "transformations": { // Case 1: simple transform with one variable // "Order Month" is temporary variable "Order Month": { "expression": "x.split('-')[1]", "x": "Order Date" // x maps CSV "Order Date" column in expression }, // Case 2: Multiple variables involved // generate a temporary variable "Total Amount" "Total Amount": { "expression": "float(p) * int(q)", "p": "Unit Price", "q": "Quantity" }, // Case 3: String combination // generate a temporary variable "Full Description" "Full Description": { "expression": "f'{a} - {b}'", "a": "Product Code", "b": "Product Name" } }, // 4. dimension mapping: "dimension name":"CSV column name" "fixed_dimensions": { "Subsidiary": "Subsidiaries", // CSV column "Product": "Product Type", // CSV column "Version": "Scenario_Column", // Temp variable from constant "Year": "Year_Column", // Temp variable from constant "Month": "Order_Month_Column" // Temp variable from transformations }, // 2. Measure dimension "measure_dimension": "Price_and_Cost_Measures", // 3. Measure dimension mapping: "Measure dimension element name" : "CSV column name" "measure_mapping": { "Unit Cost": "Unit cost", "Unit Sale Price": "Unit sale price" } } } Sample: { "cube_name": "Price_and_Cost", "source": { "file_path": "Source/Cube_PriceandCost.csv", "has_header": true, "encoding": "utf-8", "overwrite": true }, "mapping": { "mode": "wide", "constants": { "Year_column": "FY26" }, "fixed_dimensions": { "Product": "Product Type", "Version": "Version", "Channel": "Channel", "Year": "Year_column", "Month": "Month" }, "measure_dimension": "Price_and_Cost_Measures", "measure_mapping": { "Unit Cost": "Unit cost", "Unit Sale Price": "Unit sale price" } } } or { "cube_name": "Sales_Plan", "source": { "file_path": "Source/Cube_Salesplan.csv", "has_header": true, "encoding": "ansi", "overwrite": false }, "mapping": { "mode": "wide", "ignore_columns": ["Sales Staff"], "constants": { "Order_Year": "FY26" }, "transformations": { "Order_Month": { "expression": "x.split('-')[1]", "x": "Order Date" } }, "fixed_dimensions": { "Subsidiary": "Subsidiaries", "Channel": "Channel", "Product": "Product Type", "Version": "Version", "Year": "Order_Year", "Month": "Order_Month" }, "measure_dimension": "Sales_Plan_Measures", "measure_mapping": { "Quantity": "Quantity", "Cash Discount": "Cash Discount", "Volume Discount": "Volume Discount", "Freight": "Freight", "Returns and Allowances": "Returns and Allowances" } } }
/cube/extract
- Usage: Extract Cube Data to File
- JSON Input:
Syntax: // "c_level_included": false (default), if ture, export consolidation level data; // "rule_calc_included": false (default), if ture, export rule calculated data; // "output_format": "json_records","json_compact","csv" // "csv_sep": default ",", can define your own; // "file_folder": 1) Target output folder. Defaults to 'Export' if empty; 2) Relative paths are resolved from the instance directory. 3) Absolute paths must also point under the instance directory, otherwise an error occurs. 4) File names are auto-generated in the format: Cube_<cube_name>_YYYYMMDD_HHMMSS.xxx // "filters": similar to "titles" of get_view_grid; // - single element, subset, or list of elements, subsets, and mix of both, subset should be expressed as "dim:subset"; // - Blank or null or "All" or dimension omitted, mean to list all elements including the Top level element, suitful to row and column; But for titles, it's easy leading to duplication of summary. Please be careful on it, not suggest for it. // - if C=false, child elements will be used for a listed C-level element. For example, if "Q1" is used for "Month" dimension, then system will export ["Jan", "Feb", Mar"] as an adjustment; { "cube_name": "cube_name", "filters": { "Year": ["2025"], "Version": ["Actual"], "Month": ["Full_Year", "Jan", "Feb", "Month:Year&Month" ] }, "c_level_included": false, "rule_calc_included": false, "output_format": "csv", "csv_sep": ",", "file_folder": "Export" } Sample: // Mode 1: (C=False, Rule=False) // export data of whole cube // no calculation, just retrieve data from Parquet file, qiuck { "cube_name": "IncomeSheet", "output_format": "csv" } // Mode 1 (C=False, Rule=False) // export data of adhoc view { "cube_name": "IncomeSheet", "filters": { "Year": ["2025"], "Version": ["Actual"], "Month": ["Full_Year", "Jan", "Feb", "Month:Year&Month" ] }, "c_level_included": false, "rule_calc_included": false, "output_format": "csv", "csv_sep": ",", "file_path": "Export" } // Mode 2 (C=True, Rule=True) // export data of Saved View { "cube_name": "IncomeSheet", "view_name": "Budget_2025_View", "c_level_included": true, "rule_calc_included": true, "output_format": "json_records" } // Mode 3 (C=True, Rule=False) // export data of adhoc view { "cube_name": "IncomeSheet", "filters": { "Region": ["Total China", "Total USA"], "Year": ["2025"] }, "c_level_included": true, "rule_calc_included": false, "output_format": "csv", "csv_sep": "|" } // Mode 4 (C=False, Rule=True) // export data of adhoc view { "cube_name": "IncomeSheet", "filters": { "Year": ["2025"], "Month": ["Jan", "Month:Q1_Months", "Dec"], "Version": ["Budget", "Version:Scenario_A"] }, "c_level_included": false, "rule_calc_included": true, "output_format": "json_compact" } Export format: "json_records" : [ {"Year": "2025", "Region": "China", "Value": 100.0}, {"Year": "2025", "Region": "USA", "Value": 200.0}, {"Year": "2026", "Region": "China", "Value": 150.0} ] "json_compact" : { "columns": ["Year", "Region", "Value"], "data": [ ["2025", "China", 100.0], ["2025", "USA", 200.0], ["2026", "China", 150.0] ] }
/cube/clear
- Usage: Clear Cube Data, ZeroOut
- JSON Input:
ZerouOut whole cube { "cube_name": "IncomeSheet", } ZerouOut Saved View { "cube_name": "IncomeSheet", "view_name": "Budget_2025_View" } ZerouOut Adhoc View { "cube_name": "IncomeSheet", "filters": { "Year": ["2025"], "Version": ["Budget", "Forecast"], "Region": ["Total China"] } }
/view/grid
- Usage: Get View Grid
- JSON Input:
// same as /view/set // "selection" in row/column/titles share same input of below: // - single element, subset, or list of elements, subsets, and mix of both, subset should be expressed as "dim:subset"; // - if multiple elements in titles, then consolidated data will be displayed; // - Blank or null or "All" or dimension omitted, mean to list all elements including the Top level element, suitful to row and column; But for titles, it's easy leading to duplication of summary. Please be careful on it, not suggest for it. // "suppress_zeros": if ture, no display for rows/columsn with all values in 0; Sample: // Adhoc-view { "cube_name": "IncomeSheet", "rows": [ { "dimension": "Region", "selection": "Beijing" } ], "columns": [ { "dimension": "Month", "selection": ["Jan","Feb","Mar","Q1"] } ], "titles": [ { "dimension": "Version", "selection": "Actual" }, { "dimension": "Year", "selection": "FY25" }, { "dimension": "Department", "selection": "ASR110" }, { "dimension": "Measure", "selection": "Sales" } ], "suppress_zeros": false } or { "cube_name": "IncomeSheet", "rows": [ { "dimension": "Region", "selection": null } ], "columns": [ { "dimension": "Month", "selection": null } ], "titles": [ { "dimension": "Version", "selection": "Actual" }, { "dimension": "Year", "selection": "FY25" }, { "dimension": "Department", "selection": "ASR110" }, { "dimension": "Measure", "selection": "Sales" } ], "suppress_zeros": false } or // multi-index { "cube_name": "Sales_plan", "rows": [ { "dimension": "Version", "selection": "Budget Version 1" }, { "dimension": "Product", "selection": null } ], "columns": [ { "dimension": "Year", "selection": "FY26" }, { "dimension": "Month", "selection": "All" } ], "titles": [ { "dimension": "Sunsidiary", "selection": "GO Americas" }, { "dimension": "Channel", "selection": "Golf Shop" }, { "dimension": "Sales_plan_Measures", "selection": "Returns and Allowances" } ], "suppress_zeros": true } or // Saved View { "cube_name": "IncomeSheet", "view_name": "Sales of FY25 by Region and department", "suppress_zero": "True" }
/health check
- Usage: Health Check
- JSON Input:
/system/reload
- Usage: Reload Data from Disk
- JSON Input:
/system/save
- Usage: Save Data to Disk
- JSON Input:
M1_DIM_SET
M1_DIM_LIST(prefix) Prefix: optional
M1_DIM_GET
M1_DIM_GET(dim_name)
M1_DIM_SET
M1_DIM_SET(run_trigger,dim_name,element_range,index_range,weight_range,parent_pos)
M1_DIM_REINDEX
M1_DIM_REINDEX(run_trigger,dim_name,mode,sort_order,order_range)
mode: "alpha" | "numeric" | "manual"
sort_order: "asc" | "desc", default "asc"
order_range: sorted element list, only for mode manual
M1_ATTR_LIST
M1_ATTR_LIST(dim_name)
M1_ATTR_GET
M1_ATTR_GET(dim_name,attr_name)
M1_ATTR_SET
M1_ATTR_SET(run_trigger,dim_name,element_range,header_range,data_range,type_range)
M1_ATTR_DELETE
M1_ATTR_DELETE(run_trigger,dim_name,attr_name_range)
M1_SUBSET_LIST
M1_SUBSET_LIST(dim_name)
M1_SUBSET_GET
M1_SUBSET_GET(dim_name,subset)
M1_SUBSET_SET
M1_SUBSET_SET(run_trigger,dim_name,subset_input,source_data,mode)
Mode: "static" (default) or "dynamic"
M1_CUBE_LIST
M1_CUBE_LIST(prefix) prefix: optional
M1_CUBE_GET
M1_CUBE_GET(cube_names)
M1_CUBE_CREATE
M1_CUBE_CREATE(run_trigger,cube_name,dim_range)
M1_VIEW_LIST
M1_VIEW_LIST(cube_name)
M1_VIEW_GET
M1_VIEW_GET(cube_name,view_name_range)
M1_VIEW_SET
M1_VIEW_SET(trigger,cube_name,view_name,row_range,col_range,title_range)
M1_RULE_GET
M1_RULE_GET(cube_name)
M1_RULE_SET
M1_RULE_SET(run_trigger,cube_name,rule_range)
M1_READ/M1_GET/DBR
M1_READ(cube_name,coords,...)
M1_GET(cube_name,coords,...)
DBR(cube_name,coords,...)
M1_WRITE/DBRW
M1_WRITE(cube_name,coords,...,value)
DBRW(cube_name,coords,...,value)
M1_VIEW_READ/M1_VIEW
M1_VIEW(cube_name,row_dim,col_dim,filters,suppress_zeros)
M1_VIEW(cube_name,view, ,filters,suppress_zeros)
M1_VIEW_WRITE
M1_VIEW_WRITE(trigger,cube_name,row_dim_name,row_elements_range,col_dim_name,col_elements_range,value_area,filters_range)
M1_RANGE_WRITE
M1_RANGE_WRITE(trigger,cube_name,header_range,data_range)
M1_ZEROOUT
M1_ZEROOUT(run_trigger,cube_name,view_name,filter_range)
M1_SAVE
M1_SAVE(trigger,cube_name)
