#dimensions
#add-date-dimension-year
Add date dimension with yearly aggregation
Loading...
import { VBI } from '@visactor/vbi'
import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
import { useEffect, useState } from 'react'
export default () => {
const [vseed, setVSeed] = useState(null)
useEffect(() => {
const run = async () => {
const builder = VBI.chart.create({
connectorId: DEMO_CONNECTOR_ID,
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,
})
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)
const result = await builder.buildVSeed()
setVSeed(result)
}
run()
}, [])
if (!vseed) return <div>Loading...</div>
return <VSeedRender vseed={vseed} />
}#add-dimension
Add dimension
Loading...
import { VBI } from '@visactor/vbi'
import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
import { useEffect, useState } from 'react'
export default () => {
const [vseed, setVSeed] = useState(null)
useEffect(() => {
const run = async () => {
const builder = VBI.chart.create({
connectorId: DEMO_CONNECTOR_ID,
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,
})
const applyBuilder = (builder: VBIChartBuilder) => {
builder.dimensions.add('product_type', (node) => {
node.setAlias('Category')
})
const dimensionId = builder.dimensions.find((node) => node.getField() === 'product_type')?.getId()
if (dimensionId) {
builder.dimensions.update(dimensionId, (node) => {
node.setAlias('Product Type')
})
}
}
applyBuilder(builder)
const result = await builder.buildVSeed()
setVSeed(result)
}
run()
}, [])
if (!vseed) return <div>Loading...</div>
return <VSeedRender vseed={vseed} />
}#add-multiple-dimensions
Add multiple dimensions (chained calls)
Loading...
import { VBI } from '@visactor/vbi'
import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
import { useEffect, useState } from 'react'
export default () => {
const [vseed, setVSeed] = useState(null)
useEffect(() => {
const run = async () => {
const builder = VBI.chart.create({
connectorId: DEMO_CONNECTOR_ID,
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,
})
const applyBuilder = (builder: VBIChartBuilder) => {
builder.dimensions
.add('product_type', (n) => n.setAlias('Product Type'))
.add('province', (n) => n.setAlias('Province'))
}
applyBuilder(builder)
const result = await builder.buildVSeed()
setVSeed(result)
}
run()
}, [])
if (!vseed) return <div>Loading...</div>
return <VSeedRender vseed={vseed} />
}#mixed-date-and-normal-dimensions
Mixed grouping with regular dimension and quarterly-aggregated date dimension
Loading...
import { VBI } from '@visactor/vbi'
import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
import { useEffect, useState } from 'react'
export default () => {
const [vseed, setVSeed] = useState(null)
useEffect(() => {
const run = async () => {
const builder = VBI.chart.create({
connectorId: DEMO_CONNECTOR_ID,
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,
})
const applyBuilder = (builder: VBIChartBuilder) => {
builder.dimensions
.add('area', (node) => {
node.setAlias('Region')
})
.add('order_date', (node) => {
node.setAlias('Quarter').setAggregate({ func: 'toQuarter' })
})
}
applyBuilder(builder)
const result = await builder.buildVSeed()
setVSeed(result)
}
run()
}, [])
if (!vseed) return <div>Loading...</div>
return <VSeedRender vseed={vseed} />
}#remove-dimension
Remove dimension
Loading...
import { VBI } from '@visactor/vbi'
import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
import { useEffect, useState } from 'react'
export default () => {
const [vseed, setVSeed] = useState(null)
useEffect(() => {
const run = async () => {
const builder = VBI.chart.create({
connectorId: DEMO_CONNECTOR_ID,
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,
})
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)
const result = await builder.buildVSeed()
setVSeed(result)
}
run()
}, [])
if (!vseed) return <div>Loading...</div>
return <VSeedRender vseed={vseed} />
}#update-date-dimension-month
Update existing date dimension to monthly aggregation
Loading...
import { VBI } from '@visactor/vbi'
import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
import { useEffect, useState } from 'react'
export default () => {
const [vseed, setVSeed] = useState(null)
useEffect(() => {
const run = async () => {
const builder = VBI.chart.create({
connectorId: DEMO_CONNECTOR_ID,
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,
})
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)
const result = await builder.buildVSeed()
setVSeed(result)
}
run()
}, [])
if (!vseed) return <div>Loading...</div>
return <VSeedRender vseed={vseed} />
}#update-dimension
Update dimension
Loading...
import { VBI } from '@visactor/vbi'
import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
import { useEffect, useState } from 'react'
export default () => {
const [vseed, setVSeed] = useState(null)
useEffect(() => {
const run = async () => {
const builder = VBI.chart.create({
connectorId: DEMO_CONNECTOR_ID,
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,
})
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)
const result = await builder.buildVSeed()
setVSeed(result)
}
run()
}, [])
if (!vseed) return <div>Loading...</div>
return <VSeedRender vseed={vseed} />
}