• English
  • dimensions

    add-date-dimension-year

    Add date dimension with yearly aggregation

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "table",
              "dimensions": [],
              "measures": [
                {
                  "field": "sales",
                  "alias": "Sales",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "en-US",
              "version": 1,
              "limit": 20
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => {
      builder.dimensions.add('order_date', node => {
        node.setAlias('Order Date')
      })
      const dimensionId = builder.dimensions.find(node => node.getField() === 'order_date')?.getId()
      if (dimensionId) {
        builder.dimensions.update(dimensionId, node => {
          node.setAlias('Year').setAggregate({ func: 'toYear' })
        })
      }
    }
          applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    add-dimension

    Add dimension

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "table",
              "dimensions": [],
              "measures": [],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "en-US",
              "version": 1,
              "limit": 20
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => {
      builder.dimensions.add('product_type', node => {
        node.setAlias('Item Type')
      })
      const dimensionId = builder.dimensions.find(node => node.getField() === 'product_type')?.getId()
      if (dimensionId) {
        builder.dimensions.update(dimensionId, node => {
          node.setAlias('Product Type')
        })
      }
    }
          applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    add-multiple-dimensions

    Add multiple dimensions (chained calls)

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "table",
              "dimensions": [],
              "measures": [],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "en-US",
              "version": 1,
              "limit": 20
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.dimensions.add('product_type', n => n.setAlias('Product Type')).add('province', n => n.setAlias('Province')); }
          applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    mixed-date-and-normal-dimensions

    Mixed grouping with regular dimension and quarterly-aggregated date dimension

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "table",
              "dimensions": [],
              "measures": [
                {
                  "field": "sales",
                  "alias": "Sales",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "en-US",
              "version": 1,
              "limit": 20
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => {
      builder.dimensions
        .add('area', node => {
          node.setAlias('Region')
        })
        .add('order_date', node => {
          node.setAlias('Quarter').setAggregate({ func: 'toQuarter' })
        })
    }
          applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    remove-dimension

    Remove dimension

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "table",
              "dimensions": [
                {
                  "field": "product_type",
                  "alias": "Product Type"
                },
                {
                  "field": "province",
                  "alias": "Province"
                }
              ],
              "measures": [],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "en-US",
              "version": 1,
              "limit": 20
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => {
      const dimensionId = builder.dimensions.toJSON().find(item => item.field === 'product_type')?.id
      if (dimensionId) {
        builder.dimensions.update(dimensionId, node => {
          node.setAlias('Product Type to Remove')
        })
        builder.dimensions.remove(dimensionId)
      }
    }
          applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    update-date-dimension-month

    Update existing date dimension to monthly aggregation

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "table",
              "dimensions": [
                {
                  "field": "order_date",
                  "alias": "Original Order Date"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "Sales",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "en-US",
              "version": 1,
              "limit": 20
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => {
      const dimensionId = builder.dimensions.toJSON().find(item => item.field === 'order_date')?.id
      if (dimensionId) {
        const dimension = builder.dimensions.find((node) => node.getId() === dimensionId)
        if (dimension) {
          dimension.setAlias('Order Date to Update')
        }
        builder.dimensions.update(dimensionId, node => {
          node.setAlias('Month').setAggregate({ func: 'toMonth' })
        })
      }
    }
          applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    update-dimension

    Update dimension

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "table",
              "dimensions": [
                {
                  "field": "product_type",
                  "alias": "Original Product Type"
                }
              ],
              "measures": [],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "en-US",
              "version": 1,
              "limit": 20
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => {
      const dimensionId = builder.dimensions.toJSON().find(item => item.field === 'product_type')?.id
      if (dimensionId) {
        const dimension = builder.dimensions.find((node) => node.getId() === dimensionId)
        if (dimension) {
          dimension.setAlias('Product Type to Update')
        }
        builder.dimensions.update(dimensionId, n => n.setAlias('New Product Type'))
      }
    }
          applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }