109 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| ---
 | |
| title: OpenTSDB JSON Protocol
 | |
| sidebar_label: OpenTSDB JSON Protocol
 | |
| description: This document describes how to insert data into TDengine using the OpenTSDB JSON protocol.
 | |
| ---
 | |
| 
 | |
| import Tabs from "@theme/Tabs";
 | |
| import TabItem from "@theme/TabItem";
 | |
| import JavaJson from "./_java_opts_json.mdx";
 | |
| import PyJson from "./_py_opts_json.mdx";
 | |
| import GoJson from "./_go_opts_json.mdx";
 | |
| import RustJson from "./_rust_opts_json.mdx";
 | |
| import NodeJson from "./_js_opts_json.mdx";
 | |
| import CsJson from "./_cs_opts_json.mdx";
 | |
| import CJson from "./_c_opts_json.mdx";
 | |
| 
 | |
| ## Introduction
 | |
| 
 | |
| A JSON string is used in OpenTSDB JSON to represent one or more rows of data, for example: For example:
 | |
| 
 | |
| ```json
 | |
| [
 | |
|   {
 | |
|     "metric": "sys.cpu.nice",
 | |
|     "timestamp": 1346846400,
 | |
|     "value": 18,
 | |
|     "tags": {
 | |
|       "host": "web01",
 | |
|       "dc": "lga"
 | |
|     }
 | |
|   },
 | |
|   {
 | |
|     "metric": "sys.cpu.nice",
 | |
|     "timestamp": 1346846400,
 | |
|     "value": 9,
 | |
|     "tags": {
 | |
|       "host": "web02",
 | |
|       "dc": "lga"
 | |
|     }
 | |
|   }
 | |
| ]
 | |
| ```
 | |
| 
 | |
| Similar to OpenTSDB line protocol, `metric` will be used as the STable name, `timestamp` is the timestamp to be used, `value` represents the metric collected, `tags` are the tag sets.
 | |
| 
 | |
| Please refer to [OpenTSDB HTTP API](http://opentsdb.net/docs/build/html/api_http/put.html) for more details.
 | |
| 
 | |
| :::note
 | |
| 
 | |
| - In JSON protocol, strings will be converted to NCHAR type and numeric values will be converted to double type.
 | |
| - The rule of table name
 | |
|   - The child table name is created automatically in a rule to guarantee its uniqueness.
 | |
|   - You can configure `smlAutoChildTableNameDelimiter` in taos.cfg to specify a delimiter between tag values as the table names. For example, you set `smlAutoChildTableNameDelimiter=-` in taos.cfg, when you insert `st,t0=cpu1,t1=4 c1=3 1626006833639000000`, the child table will be `cpu1-4`
 | |
|   - You can configure `smlChildTableName` in taos.cfg to specify a tag value as the table names if the tag value is unique globally. For example, if a tag is called `tname` and you set `smlChildTableName=tname` in taos.cfg, when you insert `st,tname=cpu1,t1=4 c1=3 1626006833639000000`, the child table `cpu1` will be created automatically. Note that if multiple rows have the same tname but different tag_set values, the tag_set of the first row is used to create the table and the others are ignored
 | |
| 
 | |
| :::
 | |
| 
 | |
| ## Examples
 | |
| 
 | |
| <Tabs defaultValue="java" groupId="lang">
 | |
|   <TabItem label="Java" value="java">
 | |
|     <JavaJson />
 | |
|   </TabItem>
 | |
|   <TabItem label="Python" value="Python">
 | |
|     <PyJson />
 | |
|   </TabItem>
 | |
|   <TabItem label="Go" value="go">
 | |
|     <GoJson />
 | |
|   </TabItem>
 | |
|   <TabItem label="Node.js" value="nodejs">
 | |
|     <NodeJson />
 | |
|   </TabItem>
 | |
|   <TabItem label="C#" value="csharp">
 | |
|     <CsJson />
 | |
|   </TabItem>
 | |
|   <TabItem label="C" value="c">
 | |
|     <CJson />
 | |
|   </TabItem>
 | |
| </Tabs>
 | |
| 
 | |
| 2 STables will be created automatically and each STable has 2 rows of data in the above sample code.
 | |
| 
 | |
| ```cmd
 | |
| taos> use test;
 | |
| Database changed.
 | |
| 
 | |
| taos> show stables;
 | |
|               name              |
 | |
| =================================
 | |
|  meters_current                 |
 | |
|  meters_voltage                 |
 | |
| Query OK, 2 row(s) in set (0.001954s)
 | |
| 
 | |
| taos> select * from `meters_current`;
 | |
|            _ts            |           _value           |          groupid          |            location            |
 | |
| ===================================================================================================================
 | |
|  2022-03-28 09:56:51.249 |              10.300000000 |               2.000000000 | California.SanFrancisco               |
 | |
|  2022-03-28 09:56:51.250 |              12.600000000 |               2.000000000 | California.SanFrancisco               |
 | |
| Query OK, 2 row(s) in set (0.004076s)
 | |
| ```
 | |
| 
 | |
| ## Query Examples
 | |
| 
 | |
| If you want query the data of "tags": {"location": "California.LosAngeles", "groupid": 1}, here is the query SQL:
 | |
| 
 | |
| ```sql
 | |
| SELECT * FROM `meters_current` WHERE location = "California.LosAngeles" AND groupid = 3;
 | |
| ```
 |