#dimensions
#add-date-dimension-year
Thêm chiều dữ liệu ngày gộp nhóm theo năm
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": "Doanh số",
"encoding": "yAxis",
"aggregate": {
"func": "sum"
}
}
],
"whereFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"havingFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"theme": "light",
"locale": "vi-VN",
"version": 1,
"limit": 20
},
connectorId: DEMO_CONNECTOR_ID,
})
const applyBuilder = (builder: VBIChartBuilder) => {
builder.dimensions.add('order_date', node => {
node.setAlias('Ngày đặt hàng')
})
const dimensionId = builder.dimensions.find(node => node.getField() === 'order_date')?.getId()
if (dimensionId) {
builder.dimensions.update(dimensionId, node => {
node.setAlias('Năm').setAggregate({ func: 'toYear' })
})
}
}
applyBuilder(builder)
setResult(await builder.buildVSeed())
}
run()
}, [])
if (!result) return <div>Loading...</div>
return <VSeedRender vseed={result} />
}#add-dimension
Thêm chiều dữ liệu
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": "vi-VN",
"version": 1,
"limit": 20
},
connectorId: DEMO_CONNECTOR_ID,
})
const applyBuilder = (builder: VBIChartBuilder) => {
builder.dimensions.add('product_type', node => {
node.setAlias('Loại hàng hóa')
})
const dimensionId = builder.dimensions.find(node => node.getField() === 'product_type')?.getId()
if (dimensionId) {
builder.dimensions.update(dimensionId, node => {
node.setAlias('Loại sản phẩm')
})
}
}
applyBuilder(builder)
setResult(await builder.buildVSeed())
}
run()
}, [])
if (!result) return <div>Loading...</div>
return <VSeedRender vseed={result} />
}#add-multiple-dimensions
Thêm nhiều chiều dữ liệu (gọi chuỗi)
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": "vi-VN",
"version": 1,
"limit": 20
},
connectorId: DEMO_CONNECTOR_ID,
})
const applyBuilder = (builder: VBIChartBuilder) => { builder.dimensions.add('product_type', n => n.setAlias('Loại sản phẩm')).add('province', n => n.setAlias('Tỉnh/TP')); }
applyBuilder(builder)
setResult(await builder.buildVSeed())
}
run()
}, [])
if (!result) return <div>Loading...</div>
return <VSeedRender vseed={result} />
}#mixed-date-and-normal-dimensions
Nhóm kết hợp chiều dữ liệu thường và chiều dữ liệu ngày gộp nhóm theo quý
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": "Doanh số",
"encoding": "yAxis",
"aggregate": {
"func": "sum"
}
}
],
"whereFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"havingFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"theme": "light",
"locale": "vi-VN",
"version": 1,
"limit": 20
},
connectorId: DEMO_CONNECTOR_ID,
})
const applyBuilder = (builder: VBIChartBuilder) => {
builder.dimensions
.add('area', node => {
node.setAlias('Khu vực')
})
.add('order_date', node => {
node.setAlias('Quý').setAggregate({ func: 'toQuarter' })
})
}
applyBuilder(builder)
setResult(await builder.buildVSeed())
}
run()
}, [])
if (!result) return <div>Loading...</div>
return <VSeedRender vseed={result} />
}#remove-dimension
Xóa chiều dữ liệu
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": "Loại sản phẩm"
},
{
"field": "province",
"alias": "Tỉnh/TP"
}
],
"measures": [],
"whereFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"havingFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"theme": "light",
"locale": "vi-VN",
"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('Loại sản phẩm cần xóa')
})
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
Cập nhật chiều dữ liệu ngày hiện có sang gộp nhóm theo tháng
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": "Ngày đặt hàng ban đầu"
}
],
"measures": [
{
"field": "sales",
"alias": "Doanh số",
"encoding": "yAxis",
"aggregate": {
"func": "sum"
}
}
],
"whereFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"havingFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"theme": "light",
"locale": "vi-VN",
"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('Ngày đặt hàng cần điều chỉnh')
}
builder.dimensions.update(dimensionId, node => {
node.setAlias('Tháng').setAggregate({ func: 'toMonth' })
})
}
}
applyBuilder(builder)
setResult(await builder.buildVSeed())
}
run()
}, [])
if (!result) return <div>Loading...</div>
return <VSeedRender vseed={result} />
}#update-dimension
Cập nhật chiều dữ liệu
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": "Loại sản phẩm ban đầu"
}
],
"measures": [],
"whereFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"havingFilter": {
"id": "root",
"op": "and",
"conditions": []
},
"theme": "light",
"locale": "vi-VN",
"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('Loại sản phẩm cần điều chỉnh')
}
builder.dimensions.update(dimensionId, n => n.setAlias('Loại sản phẩm mới'))
}
}
applyBuilder(builder)
setResult(await builder.buildVSeed())
}
run()
}, [])
if (!result) return <div>Loading...</div>
return <VSeedRender vseed={result} />
}