VisActor / VTable

VTable is not just a high-performance multidimensional data analysis table, but also a grid artist that creates art between rows and columns.
https://visactor.io/vtable
MIT License
1.72k stars 148 forks source link

PivotTable中rowTree/columnTree的配置问题 #770

Closed InModeration closed 9 months ago

InModeration commented 10 months ago

背景:row可能无限展开,即不会关注某一级的dimensionKey。比如row用于描述部门,部门可以展开/收起,配置如下:

const row = [
  {
    dimensionKey: 'department',
    title: '部门'
  }
]
const rowTree = [
  {
    dimensionKey: 'department',
    value: '大部门',
    children: [
      {
        dimensionKey: 'department',
        value: '中部门-0'
      },
      {
        dimensionKey: 'department',
        value: '中部门-1',
        children: [
          {
            dimensionKey: 'department',
            value: '小部门-0'
          }
        ]
      }
    ]
  }
]

在当前场景下,已经自行构建了部门的树形结构,现配置records为

const records = [
  // 生效,大部门对应的单元格有值
  {
    department: '大部门',
    // other datas
  },

  // 不生效,对应的单元格无值
  {
    department: '中部门-0',
    // other datas
  },
  {
    department: '小部门-0',
    // other datas
  }
]

问题:树形结构已经生成,并且对应节点都有不同的维度值,但是records中子节点的维度值时并不能完成映射

期望:满足上述场景的诉求,即在rowTree/columnTree的所有层级所有节点的dimensionKey都一致时,能够成功根据一个dimensionKey的特定值,完成所有父子节点值的映射


另一个存在疑问的点,当我按照demo的方式声明rowTree

image

这种情况下,我去声明第n层级的records数据,需要声明n-1个父级节点的数据,如果一直展开,那数据量会疯狂膨胀

fangsmile commented 10 months ago

可以加下飞书群 具体创建个话题 聊一下 飞书20231221-201849

fangsmile commented 9 months ago

请问加我们的群了吗。 上面的问题我描述一下 ,举个例子: 行表头有两层,第一层是类别,第二层是省份, 最终不管是你自己组建树还是VTable内部组建树,树可能是这样的:

const rowTree = [
  {
    dimensionKey: 'category',
    value: '办公用品',
    children: [
      {
        dimensionKey: 'province',
        value: '上海'
      },
      {
          dimensionKey: 'province',
          value: '山东'
      }
    ]
  },
 {
    dimensionKey: 'category',
    value: '家具',
    children: [
      {
        dimensionKey: 'province',
        value: '上海'
      },
      {
          dimensionKey: 'province',
          value: '山东'
      }
    ]
  }
]

如果数据中只有一个维度的值,那这个上海是对应'办公用品'还是'家具'的是无法区分的,我们需要个维度全路径的匹配对应关系

const records = [
  {
    province: '上海',
    // other datas
  },
 ...
]

@InModeration

InModeration commented 9 months ago

请问加我们的群了吗。 上面的问题我描述一下 ,举个例子: 行表头有两层,第一层是类别,第二层是省份, 最终不管是你自己组建树还是VTable内部组建树,树可能是这样的:

const rowTree = [
  {
    dimensionKey: 'category',
    value: '办公用品',
    children: [
      {
        dimensionKey: 'province',
        value: '上海'
      },
      {
          dimensionKey: 'province',
          value: '山东'
      }
    ]
  },
 {
    dimensionKey: 'category',
    value: '家具',
    children: [
      {
        dimensionKey: 'province',
        value: '上海'
      },
      {
          dimensionKey: 'province',
          value: '山东'
      }
    ]
  }
]

如果数据中只有一个维度的值,那这个上海是对应'办公用品'还是'家具'的是无法区分的,我们需要个维度全路径的匹配对应关系

const records = [
  {
    province: '上海',
    // other datas
  },
 ...
]

@InModeration

加了。这个问题我按照你们的思路处理了,即每个子单元格都补充了祖先节点的值,暂时没有什么性能上的问题