constfetch=require("node-fetch");asyncModule(async()=>{letdynamicCubes=await(awaitfetch("http://host:port/cube/models")// host - имя хоста, где развернут сервис data, port - порт сервиса data).json()constconvertStringPropToFunction=(propNames,dimensionDefinition)=>{letnewResult={...dimensionDefinition};propNames.forEach((propName)=>{constpropValue=newResult[propName];if(!propValue){return;}newResult[propName]=()=>propValue;});returnnewResult;};consttransformDimensions=(dimensions)=>{returnObject.keys(dimensions).reduce((result,dimensionName)=>{constdimensionDefinition=dimensions[dimensionName];return{...result,[dimensionName]:convertStringPropToFunction(["sql"],dimensionDefinition),};},{});};consttransformMeasures=(measures)=>{returnObject.keys(measures).reduce((result,dimensionName)=>{constdimensionDefinition=measures[dimensionName];return{...result,[dimensionName]:convertStringPropToFunction(["sql","drill_members"],dimensionDefinition),};},{});};dynamicCubes.forEach((dynamicCube)=>{cube(dynamicCube.Name,Object.assign({},dynamicCube.Settings,{sql_table:dynamicCube.Settings.sql_table,dimensions:transformDimensions(dynamicCube.Settings.dimensions),measures:transformMeasures(dynamicCube.Settings.measures)}))});});
В конфигурационнм файле добавьте настройку schemaVersion
module.exports={schemaVersion:async({securityContext})=>{constresponse=awaitfetch('http://host:port/cube/version')// host - имя хоста, где развернут сервис data, port - порт сервиса dataconstschemaVersion=awaitresponse.text()returnschemaVersion}}
Запустите настроенный докер образ cubejs
В конфигурационном файле в разделе applications.data.cube настройте подключение к cubejs.
В форме BIForm введите имя документа. Укажите необходимую роль, чтобы дать права на загрузку данных для пользователей (далее в статье будет пример запроса, где используется эта роль).
На тулбаре нажмите кнопку Режим редактирования.
В левой части документа отображается список доступных контролов. Перетащите контролы в рабочую область документа. в Настройках контрола задайте куб, измерения, меры. Сохраните документ.