All Products
Search
Document Center

:Kueri data

Last Updated:Mar 28, 2026

Menanyakan titik data dari satu atau beberapa deret waktu dalam rentang waktu tertentu. Kirim permintaan POST ke /api/query dengan isi JSON yang mendefinisikan rentang waktu dan satu atau beberapa subkueri.

Sintaksis permintaan

POST /api/query

Parameter permintaan

ParameterTipeWajibBawaanDeskripsi
startLongYaAwal rentang waktu. Satuan: detik atau milidetik. TSDB menentukan satuan berdasarkan nilai numeriknya. Lihat Satuan timestamp.
endLongTidakWaktu server saat iniAkhir rentang waktu. Satuan: detik atau milidetik. Nilai bawaan adalah waktu saat ini di server TSDB. Lihat Satuan timestamp.
queriesArrayYaArray berisi subkueri. Lihat Parameter subkueri.
msResolutionBooleanTidakfalseMenentukan apakah timestamp dikembalikan dalam milidetik. Hanya berlaku jika titik data yang ditanyakan menggunakan timestamp berpresisi detik. Jika true, semua timestamp dalam respons dikonversi ke milidetik. Jika false, satuan asli dipertahankan. Titik data yang disimpan dengan timestamp milidetik selalu dikembalikan dalam milidetik, terlepas dari pengaturan ini.
hintMapTidakPetunjuk kueri untuk mengurangi waktu respons. Lihat Parameter: hint.

Satuan timestamp

TSDB menentukan satuan timestamp berdasarkan nilai numerik:

RentangSatuanRentang tanggal
[4294968, 4294967295]Detik1970-02-20 01:02:48 – 2106-02-07 14:28:15
[4294967296, 9999999999999]milidetik1970-02-20 01:02:47.296 – 2286-11-21 01:46:39.999
(-∞, 4294968) atau (9999999999999, +∞)Tidak valid
Aturan ini berlaku untuk /api/put (menulis) dan /api/query (menanyakan).

Untuk menanyakan titik data pada satu titik waktu tertentu, atur start dan end ke nilai yang sama—misalnya, 1356998400.

Parameter subkueri

Setiap objek dalam array queries mendukung parameter berikut:

ParameterTipeWajibBawaanDeskripsi
aggregatorStringYaFungsi agregasi. Lihat Parameter: aggregator. Contoh: sum.
metricStringYaNama metrik. Contoh: sys.cpu0.
rateBooleanTidakfalseMenentukan apakah akan menghitung laju pertumbuhan antara nilai-nilai berurutan. Rumus: (Vt − Vt-1) / (t − t-1).
deltaBooleanTidakfalseMenentukan apakah akan menghitung delta antara nilai-nilai berurutan. Rumus: Vt − Vt-1. Lihat Parameter: delta.
limitIntegerTidak0Jumlah maksimum titik data yang dikembalikan per deret waktu per halaman. 0 berarti tanpa batas.
offsetIntegerTidak0Jumlah titik data yang dilewati per deret waktu per halaman. 0 berarti tidak ada titik data yang dilewati.
dpValueStringTidakMemfilter titik data yang dikembalikan berdasarkan nilainya. Operator yang didukung: >, <, =, <=, >=, !=. Jika nilainya berupa string, hanya = dan != yang didukung. Diterapkan setelah agregasi.
preDpValueStringTidakMemfilter titik data mentah selama pemindaian sebelum agregasi. Operator yang sama seperti dpValue. Titik data yang gagal melewati filter ini dikecualikan dari semua perhitungan.
downsampleStringTidakKonfigurasi downsampling. Lihat Parameter: downsample. Contoh: 60m-avg.
tagsMapTidakKondisi filter berbasis tag. Saling eksklusif dengan filters. Jika keduanya ditentukan, parameter yang muncul lebih akhir dalam JSON yang berlaku.
filtersListTidakKondisi filter dalam format JSON. Saling eksklusif dengan tags. Jika keduanya ditentukan, parameter yang muncul lebih akhir dalam JSON yang berlaku. Lihat Parameter: filters.
hintMapTidakPetunjuk kueri tingkat subkueri. Lihat Parameter: hint.
forecastingStringTidakMemprediksi titik data masa depan menggunakan Pelatihan AI. Lihat Parameter: forecasting.
abnormaldetectStringTidakMendeteksi anomali dalam deret waktu menggunakan Pelatihan AI. Lihat Parameter: abnormaldetect.
Satu permintaan mendukung maksimal 200 subkueri.
Jika tags dan filters keduanya ditentukan, parameter yang muncul lebih akhir dalam JSON yang berlaku.

Contoh permintaan

POST /api/query
{
  "start": 1356998400,
  "end": 1356998460,
  "queries": [
    {
      "aggregator": "sum",
      "metric": "sys.cpu.0",
      "rate": "true",
      "tags": {
        "host": "*",
        "dc": "lga"
      }
    }
  ]
}

Elemen respons

Permintaan yang berhasil mengembalikan HTTP 200 dengan array JSON. Setiap elemen sesuai dengan hasil satu subkueri.

ParameterDeskripsi
metricNama metrik.
tagsTag yang nilainya tidak diagregasi.
aggregateTagsTag yang nilainya diagregasi.
dpsTitik data dalam bentuk pasangan timestamp-nilai.

Contoh respons

[
  {
    "metric": "tsd.hbase.puts",
    "tags": {"appName": "hitsdb"},
    "aggregateTags": ["host"],
    "dps": {
      "1365966001": 25595461080,
      "1365966061": 25595542522,
      "1365966062": 25595543979,
      "1365973801": 25717417859
    }
  }
]

Parameter: limit dan offset

Gunakan limit dan offset bersamaan untuk membagi hasil menjadi beberapa halaman dalam satu subkueri.

  • limit: jumlah maksimum titik data yang dikembalikan per deret waktu. Nilai bawaan 0 berarti tanpa batas.

  • offset: jumlah titik data yang dilewati per deret waktu. Nilai bawaan 0 berarti tidak ada titik data yang dilewati.

Penting

Baik limit maupun offset tidak boleh diatur ke angka negatif.

Untuk mengambil titik data peringkat 1001 hingga 1500, atur limit ke 500 dan offset ke 1000:

{
  "start": 1346046400,
  "end": 1347056500,
  "queries": [
    {
      "aggregator": "avg",
      "downsample": "2s-sum",
      "metric": "sys.cpu.0",
      "limit": "500",
      "offset": "1000",
      "tags": {
        "host": "localhost",
        "appName": "hitsdb"
      }
    }
  ]
}

Parameter: dpValue

Memfilter titik data berdasarkan nilainya setelah agregasi. Operator yang didukung: >, <, =, <=, >=, !=.

Penting

Jika nilai filter berupa string, hanya = dan != yang didukung.

Contoh

{
  "start": 1346046400,
  "end": 1347056500,
  "queries": [
    {
      "aggregator": "avg",
      "downsample": "2s-sum",
      "metric": "sys.cpu.0",
      "dpValue": ">=500",
      "tags": {
        "host": "localhost",
        "appName": "hitsdb"
      }
    }
  ]
}

Parameter: delta

Ketika delta diatur ke true, setiap nilai dalam respons dps merupakan delta yang dihitung antara titik data berurutan. Jika hasil asli berisi n pasangan kunci-nilai, hasil delta berisi n−1 pasangan—pasangan pertama dibuang karena tidak ada nilai sebelumnya untuk dihitung. Operator delta juga berlaku untuk nilai setelah downsampling.

deltaOptions

Konfigurasikan deltaOptions dalam subkueri untuk mengontrol cara delta dihitung.

ParameterTipeWajibBawaanDeskripsi
counterBooleanTidakfalseMemperlakukan nilai metrik sebagai hitungan kumulatif yang meningkat atau menurun secara monoton (mirip counter). Server tidak memvalidasi nilai metrik tersebut.
counterMaxIntegerTidakAmbang batas untuk nilai delta ketika counter bernilai true. Jika delta absolut melebihi ambang batas ini, delta tersebut dianggap tidak normal. Jika tidak diatur, tidak ada ambang batas yang diterapkan.
dropResetBooleanTidakfalseMengontrol perilaku untuk delta tidak normal ketika counterMax diatur. Jika true, delta tidak normal dibuang. Jika false, delta tidak normal diatur ulang ke 0.

Contoh

{
  "start": 1346046400,
  "end": 1347056500,
  "queries": [
    {
      "aggregator": "none",
      "downsample": "5s-avg",
      "delta": true,
      "deltaOptions": {
        "counter": true,
        "counterMax": 100
      },
      "metric": "sys.cpu.0",
      "dpValue": ">=50",
      "tags": {
        "host": "localhost",
        "appName": "hitsdb"
      }
    }
  ]
}

Parameter: downsample

Downsampling mengagregasi data dalam interval waktu tertentu, berguna saat menanyakan data dalam rentang waktu panjang. Rentang waktu dibagi menjadi jendela dengan interval yang ditentukan, dan setiap timestamp yang dikembalikan menandai awal jendela tersebut.

Format

<interval><satuan>-<aggregator>[-<kebijakan pengisian>]
Penting

Ketika downsample ditentukan, TSDB secara otomatis memperluas rentang kueri sebesar satu interval di kedua sisi. Misalnya, rentang [1346846401, 1346846499] dengan interval 5 menit menjadi [1346846101, 1346846799].

Bidang

`interval`

Nilai numerik seperti 5 atau 60. Gunakan 0all untuk mengagregasi semua titik data dalam rentang menjadi satu nilai.

`units`

NilaiSatuan
sDetik
mMenit
hJam
dHari
nBulan
yTahun
Secara bawaan, timestamp disejajarkan menggunakan pemotongan modulo: Timestamp sejajar = Timestamp data − (Timestamp data % Interval waktu).
Untuk menyelaraskan berdasarkan interval kalender (misalnya, dari 00:00 hingga 00:00 hari berikutnya), tambahkan c ke satuan: 1dc.

`aggregator`

OperatorDeskripsi
avgNilai rata-rata
countJumlah titik data
firstNilai pertama
lastNilai terakhir
minNilai minimum
maxNilai maksimum
medianNilai median
sumJumlah nilai
zimsumJumlah nilai (interpolasi nol)
rfirstSama seperti first, tetapi mengembalikan timestamp asli alih-alih timestamp yang disejajarkan
rlastSama seperti last, tetapi mengembalikan timestamp asli alih-alih timestamp yang disejajarkan
rminSama seperti min, tetapi mengembalikan timestamp asli alih-alih timestamp yang disejajarkan
rmaxSama seperti max, tetapi mengembalikan timestamp asli alih-alih timestamp yang disejajarkan
Operator rfirst, rlast, rmin, dan rmax tidak dapat digunakan bersamaan dengan kebijakan pengisian dalam ekspresi downsampling yang sama.

Kebijakan pengisian

Kebijakan pengisian menentukan cara TSDB mengisi nilai yang hilang dalam hasil downsampling. Saat tidak ada data dalam jendela waktu tertentu, TSDB menerapkan kebijakan pengisian untuk menghasilkan nilai.

Kebijakan pengisianMengisi nilai yang hilang dengan
noneTanpa pengisian (bawaan)
nannull
nullnull
zero0
linearNilai yang dihitung melalui interpolasi linear
previousNilai sebelumnya
nearNilai terdekat di sekitarnya
afterNilai berikutnya
fixedNilai tetap yang ditentukan pengguna

Kebijakan pengisian tetap

Untuk mengisi nilai yang hilang dengan angka tetap, gunakan format:

<interval><satuan>-<aggregator>-fixed#<angka>

Nilai tetap bisa positif atau negatif. Contoh: 1h-sum-fixed#6, 1h-avg-fixed#-8.

Contoh downsampling

1m-avg, 1h-sum-zero, 1h-sum-near

Penting

downsample bersifat opsional. Untuk menonaktifkan downsampling secara eksplisit, atur ke null atau string kosong: {"downsample": null} atau {"downsample": ""}.

Parameter: aggregator

Setelah downsampling, TSDB menggabungkan beberapa garis waktu menjadi satu dengan mengagregasi nilai pada setiap timestamp yang disejajarkan. Agregasi dilewati jika hanya satu garis waktu yang cocok dengan kueri.

Interpolasi

Saat mengagregasi beberapa garis waktu, garis waktu yang tidak memiliki nilai pada timestamp tertentu akan menerima nilai hasil interpolasi—asalkan tidak ada kebijakan pengisian yang ditentukan dan setidaknya satu garis waktu lain memiliki nilai pada timestamp tersebut.

Misalnya, menggabungkan dua garis waktu dengan {"downsample": "10s-avg", "aggregator": "sum"}:

  • Garis waktu 1 memiliki nilai pada t+0, t+10, t+20, t+30.

  • Garis waktu 2 memiliki nilai pada t+0, t+20, t+30.

Sebelum agregasi, TSDB melakukan interpolasi nilai untuk Garis waktu 2 pada t+10. Metode interpolasi tergantung pada aggregator:

OperatorDeskripsiMetode interpolasi
avgNilai rata-rataInterpolasi linear
countJumlah titik data0 diinterpolasi
mimminNilai minimumNilai maksimum diinterpolasi
mimmaxNilai maksimumNilai minimum diinterpolasi
minNilai minimumInterpolasi linear
maxNilai maksimumInterpolasi linear
noneMelewati agregasi0 diinterpolasi
sumJumlah nilaiInterpolasi linear
zimsumJumlah nilai0 diinterpolasi

Parameter: filters

Parameter filters menerima daftar objek filter JSON untuk pemfilteran berbasis tag. Parameter ini saling eksklusif dengan parameter tags.

Parameter objek filter

ParameterTipeWajibBawaanDeskripsi
typeStringYaJenis filter. Lihat Jenis filter. Contoh: literal_or.
tagkStringYaKunci tag yang difilter. Contoh: host.
filterStringYaEkspresi filter. Contoh: web01|web02.
groupByBooleanTidakfalseMenentukan apakah akan melakukan operasi GROUP BY pada nilai tag yang cocok.

Anda juga dapat menggunakan ekspresi tag singkat langsung dalam subkueri:

  • tagk = *: melakukan GROUP BY pada semua nilai kunci tag.

  • tagk = tagv1|tagv2: mengagregasi nilai tagv1 dan nilai tagv2 secara terpisah.

Jenis filter

Jenis filterContohDeskripsi
literal_orweb01|web02Mencocokkan nilai tag eksak yang dipisahkan oleh |. Sensitif terhadap huruf besar/kecil.
wildcard*.example.comMencocokkan nilai tag menggunakan pola wildcard. Sensitif terhadap huruf besar/kecil.

Contoh tanpa filter

{
  "start": 1356998400,
  "end": 1356998460,
  "queries": [
    {
      "aggregator": "sum",
      "metric": "sys.cpu.0",
      "rate": "true",
      "tags": {
        "host": "*",
        "dc": "lga"
      }
    }
  ]
}

Contoh dengan filter

{
  "start": 1356998400,
  "end": 1356998460,
  "queries": [
    {
      "aggregator": "sum",
      "metric": "sys.cpu.0",
      "rate": "true",
      "filters": [
        {
          "type": "wildcard",
          "tagk": "host",
          "filter": "*",
          "groupBy": true
        },
        {
          "type": "literal_or",
          "tagk": "dc",
          "filter": "lga|lga1|lga2",
          "groupBy": false
        }
      ]
    }
  ]
}

Parameter: hint

Petunjuk kueri mengurangi waktu respons dengan mengontrol indeks kunci-tag mana yang digunakan TSDB selama eksekusi kueri. Misalnya, jika deret waktu yang cocok dengan himpunan tag B merupakan subset dari yang cocok dengan himpunan tag A, Anda dapat memberi petunjuk agar TSDB hanya menggunakan indeks untuk B—menghindari overhead membaca dari A.

Parameter hint dapat diatur di tingkat atas (berlaku untuk seluruh kueri) atau di dalam subkueri (berlaku hanya untuk subkueri tersebut).

Versi TSDB saat ini hanya mendukung parameter tagk dalam petunjuk.

Format

Dalam peta tagk, atur setiap kunci tag ke 1 untuk menggunakan indeksnya, atau 0 untuk melewatinya. Semua nilai harus berupa 0 atau 1—menggabungkan keduanya dalam satu petunjuk menyebabkan error.

Persyaratan versi: TSDB V2.6.1 dan yang lebih baru.

Petunjuk diterapkan pada subkueri

{
  "start": 1346846400,
  "end": 1346846400,
  "queries": [
    {
      "aggregator": "none",
      "metric": "sys.cpu.nice",
      "tags": {
        "dc": "lga",
        "host": "web01"
      }
    }
  ],
  "hint": {
    "tagk": {
      "dc": 1,
      "host": 0
    }
  }
}

Petunjuk diterapkan pada seluruh kueri

{
  "start": 1346846400,
  "end": 1346846400,
  "queries": [
    {
      "aggregator": "none",
      "metric": "sys.cpu.nice",
      "tags": {
        "dc": "lga",
        "host": "web01"
      }
    }
  ],
  "hint": {
    "tagk": {
      "dc": 1
    }
  }
}

Kasus error

Nilai campuran `0` dan `1`

Permintaan berikut menyebabkan error karena dc bernilai 1 dan host bernilai 0:

{
  "start": 1346846400,
  "end": 1346846400,
  "queries": [
    {
      "aggregator": "none",
      "metric": "sys.cpu.nice",
      "tags": {
        "dc": "lga",
        "host": "web01"
      }
    }
  ],
  "hint": {
    "tagk": {
      "dc": 1,
      "host": 0
    }
  }
}

Respons error:

{
  "error": {
    "code": 400,
    "message": "Nilai petunjuk hanya boleh 0 atau 1, dan tidak boleh keduanya sekaligus",
    "details": "TSQuery(start_time=1346846400, end_time=1346846400, subQueries[TSSubQuery(metric=sys.cpu.nice, filters=[filter_name=literal_or, tagk=dc, literals=[lga], group_by=true, filter_name=literal_or, tagk=host, literals=[web01], group_by=true], tsuids=[], agg=none, downsample=null, ds_interval=0, rate=false, rate_options=null, delta=false, delta_options=null, top=0, granularity=null, granularityDownsample=null, explicit_tags=explicit_tags, index=0, realTimeSeconds=-1, useData=auto, limit=0, offset=0, dpValue=null, preDpValue=null, startTime=1346846400000, endTime=1346846400000, Query_ID=null)] padding=false, no_annotations=false, with_global_annotations=false, show_tsuids=false, ms_resolution=false, options=[])"
  }
}

Nilai selain `0` atau `1`

{
  "start": 1346846400,
  "end": 1346846400,
  "queries": [
    {
      "aggregator": "none",
      "metric": "sys.cpu.nice",
      "tags": {
        "dc": "lga",
        "host": "web01"
      }
    }
  ],
  "hint": {
    "tagk": {
      "dc": 100
    }
  }
}

Respons error:

{
  "error": {
    "code": 400,
    "message": "Nilai petunjuk hanya boleh 0 atau 1, dan terdeteksi bahwa '100' dikirimkan",
    "details": "TSQuery(start_time=1346846400, end_time=1346846400, subQueries[TSSubQuery(metric=sys.cpu.nice, filters=[filter_name=literal_or, tagk=dc, literals=[lga], group_by=true, filter_name=literal_or, tagk=host, literals=[web01], group_by=true], tsuids=[], agg=none, downsample=null, ds_interval=0, rate=false, rate_options=null, delta=false, delta_options=null, top=0, granularity=null, granularityDownsample=null, explicit_tags=explicit_tags, index=0, realTimeSeconds=-1, useData=auto, limit=0, offset=0, dpValue=null, preDpValue=null, startTime=1346846400000, endTime=1346846400000, Query_ID=null)] padding=false, no_annotations=false, with_global_annotations=false, show_tsuids=false, ms_resolution=false, options=[])"
  }
}

Parameter: forecasting

Menggunakan Pelatihan AI pada data deret waktu historis untuk memprediksi titik data masa depan. TSDB dilatih menggunakan data yang ada untuk mengidentifikasi tren dan siklus, lalu memproyeksikan nilai ke depan.

Format

<NamaAlgoritma>-<JumlahTitikPrediksi>[-<KebijakanPrediksi>]

Algoritma yang didukung

  • `arima` — AutoRegressive Integrated Moving Average (ARIMA). KebijakanPrediksi untuk ARIMA memiliki dua bidang:

    • delta: orde diferensi. Bawaan: 1. Tingkatkan untuk mengurangi fluktuasi data.

    • seasonality: panjang siklus dalam jumlah titik data. Bawaan: 1. Atur agar sesuai dengan siklus alami data (misalnya, 10 jika data berfluktuasi setiap 10 titik data).

  • `holtwinters` — Penghalusan eksponensial Holt-Winters. ForecastPolicy untuk Holt-Winters memiliki satu bidang:

    • seasonality: sama seperti ARIMA. Bawaan: 1.

Contoh: arima-1, arima-48-1-48, holtwinters-1-1

Contoh

Diberikan data yang ada dalam deret:

[
  {
    "metric": "sys.cpu.nice",
    "tags": {"dc": "lga", "host": "web00"},
    "aggregateTags": [],
    "dps": {
      "1346837400": 1,
      "1346837401": 2,
      "1346837402": 3,
      "1346837403": 4,
      "1346837404": 5,
      "1346837405": 6,
      "1346837406": 7,
      "1346837407": 8,
      "1346837408": 9,
      "1346837409": 10,
      "1346837410": 11,
      "1346837411": 12
    }
  }
]

Kueri:

{
  "start": 1346837400,
  "end": 1346847400,
  "queries": [
    {
      "aggregator": "none",
      "metric": "sys.cpu.nice",
      "forecasting": "arima-1"
    }
  ]
}

Hasil prediksi (satu titik data tambahan ditambahkan):

[
  {
    "metric": "sys.cpu.nice",
    "tags": {"dc": "lga", "host": "web00"},
    "aggregateTags": [],
    "dps": {
      "1346837400": 1,
      "1346837401": 2,
      "1346837402": 3,
      "1346837403": 4,
      "1346837404": 5,
      "1346837405": 6,
      "1346837406": 7,
      "1346837407": 8,
      "1346837408": 9,
      "1346837409": 10,
      "1346837410": 11,
      "1346837411": 12,
      "1346837412": 13
    }
  }
]

Parameter: abnormaldetect

Menggunakan algoritma STL (Seasonal-Trend decomposition using Loess) untuk mendeteksi anomali dalam deret waktu. TSDB dilatih menggunakan data yang ada untuk mengidentifikasi pola, lalu menandai titik data yang menyimpang secara signifikan dari rentang yang diharapkan.

Format

<NamaAlgoritma>[-<Sigma>-<NP>-<NS>-<NT>-<NL>]

Hanya algoritma STL yang didukung. Jika Anda tidak familiar dengan penyetelan parameter STL, gunakan nilai bawaan dengan menghilangkan bidang parameter tersebut.

Parameter

ParameterDeskripsi
NamaAlgoritmaNama algoritma. Gunakan stl.
SigmaAmbang batas anomali. Titik data ditandai sebagai tidak normal jika selisih absolut antara nilainya dan rata-rata deret melebihi Sigma × deviasi standar. Nilai umum: 3.0.
NPJumlah titik data per siklus.
NSParameter penghalusan musiman.
NTParameter penghalusan tren.
NLParameter penghalusan filter low-pass.

Contoh

"abnormaldetect": "stl"
"abnormaldetect": "stl-5-5-7-0-0"

Contoh kueri

{
  "start": 1346836400,
  "end": 1346946400,
  "queries": [
    {
      "aggregator": "none",
      "metric": "sys.cpu.nice",
      "abnormaldetect": "stl-5-5-7-0-0",
      "filters": [
        {
          "type": "literal_or",
          "tagk": "dc",
          "filter": "lga",
          "groupBy": false
        },
        {
          "type": "literal_or",
          "tagk": "host",
          "filter": "web00",
          "groupBy": false
        }
      ]
    }
  ]
}

Output deteksi anomali

Setiap nilai dalam dps berupa array dengan format:

[srcValue, upperValue, lowerValue, predictValue, isAbnormal]
BidangDeskripsi
srcValueNilai titik data asli.
upperValueBatas atas rentang yang diharapkan.
lowerValueBatas bawah rentang yang diharapkan.
predictValueNilai yang diprediksi oleh algoritma STL.
isAbnormal0 — normal. 1 — tidak normal.

Contoh output

[
  {
    "metric": "sys.cpu.nice",
    "tags": {"dc": "lga", "host": "web00"},
    "aggregateTags": [],
    "dps": {
      "1346837400": [1, 1.0000000000000049, 0.9999999999999973, 1.0000000000000013, 0],
      "1346837401": [2, 2.0000000000000036, 1.9999999999999958, 1.9999999999999998, 0],
      "1346837402": [3, 3.0000000000000036, 2.9999999999999956, 3, 0],
      "1346837403": [4, 4.0000000000000036, 3.9999999999999956, 4, 1],
      "1346837404": [5, 5.0000000000000036, 4.9999999999999964, 5, 0],
      "1346837405": [6, 6.000000000000002, 5.999999999999995, 5.999999999999998, 0],
      "1346837406": [7, 7.0000000000000036, 6.9999999999999964, 7, 1],
      "1346837407": [8, 8.000000000000004, 7.9999999999999964, 8, 0],
      "1346837408": [9, 9.000000000000004, 8.999999999999996, 9, 0],
      "1346837409": [10, 10.000000000000004, 9.999999999999996, 10, 0],
      "1346837410": [11, 11.000000000000005, 10.999999999999998, 11.000000000000002, 0],
      "1346837411": [12, 12.000000000000004, 11.999999999999996, 12, 0]
    }
  }
]