You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CubeJS Docker Compose环境预聚合上传报错:文件或目录不存在

问题

通过Docker Compose默认配置搭建CubeJS环境,使用预聚合功能时所有预聚合均报错,示例报错:

Error: Error during upload of dev_pre_aggregations.publishers_users_rollup_2yhuuedy_kidftr4f_1ht5m0r-0.csv.gz create table: CREATE TABLE dev_pre_aggregations.: Internal: No such file or directory (os error 2

Cube定义代码如下:

cube(`Users`, {
  sql: `SELECT * FROM users`,
  
  preAggregations: {
    users_rollup: {
      type: 'rollup',
      dimensions: [CUBE.id, CUBE.email]
    }
  },
  
  joins: {
    
  },
  
  measures: {
    count: {
      type: `count`,
    }
  },
  
  dimensions: {
    id: {
      sql: `id`,
      type: `number`,
      primaryKey: true
    },
    
    email: {
      sql: `email`,
      type: `string`
    }
  },
  
  dataSource: `default`
});

cube(`Publishers`, {
    extends: Users,
    sql: `SELECT * FROM ${Users.sql}`,
});

cube(`Statistics`, {
  sql: `SELECT * FROM impressions`,
  
  preAggregations: {
    statistics_by_publisher_rollup: {
      type: 'rollup',
      measures: [CUBE.impressions],
      dimensions: [CUBE.publisherId],
      timeDimension: CUBE.date,
      granularity: `day`
    },
    statistics_with_publishers_rollup: {
      type: `rollupJoin`,
      measures: [CUBE.impressions],
      dimensions: [CUBE.publisherId, Publishers.email],
      rollups: [Publishers.users_rollup, CUBE.statistics_by_publisher_rollup]
    }
  },
  
  joins: {
    Publishers: {
      relationship: `belongsTo`,
      sql: `${CUBE.advertiserId} = ${Publishers.id}`
    }
  },
  
  measures: {
    impressions: {
      sql: `impressions`,
      type: `sum`,
    }
  },
  
  dimensions: {
    date: {
      sql: `date`,
      type: `time`
    },

    publisherId: {
      sql: `publisher_id`,
      type: `number`,
      primaryKey: true
    },
  },
  
  dataSource: `statistics`
});

当前.cubestore/data目录下仅存在temp-uploads文件夹,无其他预聚合相关内容。

解决方案

1. 修复CubeStore目录权限

Docker挂载的本地目录可能存在权限不足,导致CubeStore无法创建预聚合相关文件:

  • 停止所有容器:docker-compose down
  • 修改本地.cubestore/data目录权限,匹配容器内运行用户(通常为1000:1000):
    chown -R 1000:1000 .cubestore/data
    
  • 重启容器:docker-compose up -d

2. 重新初始化CubeStore

若CubeStore初始化不完整,会导致无法创建预聚合表:

  • 停止容器后,清空.cubestore/data目录下所有内容
  • 重启容器,让CubeStore重新完成初始化
  • 查看CubeStore日志确认初始化状态:docker-compose logs cubestore

3. 修正Cube定义中的错误

  • Publishers Cube冗余配置:继承Users后无需重复定义sql,移除该配置避免冲突:
    cube(`Publishers`, {
        extends: Users,
    });
    
  • Statistics Cube关联错误:关联条件中使用了不存在的advertiserId,修正为正确的publisherId:
    joins: {
      Publishers: {
        relationship: `belongsTo`,
        sql: `${CUBE.publisherId} = ${Publishers.id}`
      }
    }
    

4. 手动触发预聚合构建

修改完成后,手动触发预聚合验证修复效果:

  • 通过CubeJS Playground执行依赖预聚合的查询
  • 或使用CLI命令构建:npx cubejs-cli pre-aggregations build
  • 检查.cubestore/data目录是否生成新内容,同时查看容器日志确认无报错

内容的提问来源于stack exchange,提问作者Ewan Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:10:19