[TD-6443]<feature>: Support OpenTSDB HTTP JSON data import format
This commit is contained in:
parent
7745b6b573
commit
4a72753452
|
@ -13,12 +13,12 @@
|
||||||
|
|
||||||
#include "tscParseLine.h"
|
#include "tscParseLine.h"
|
||||||
|
|
||||||
#define MAX_FIELDS_NUM 2
|
#define OTD_MAX_FIELDS_NUM 2
|
||||||
#define JSON_SUB_FIELDS_NUM 2
|
#define OTD_JSON_SUB_FIELDS_NUM 2
|
||||||
#define JSON_FIELDS_NUM 4
|
#define OTD_JSON_FIELDS_NUM 4
|
||||||
|
|
||||||
#define OTS_TIMESTAMP_COLUMN_NAME "ts"
|
#define OTD_TIMESTAMP_COLUMN_NAME "ts"
|
||||||
#define OTS_METRIC_VALUE_COLUMN_NAME "value"
|
#define OTD_METRIC_VALUE_COLUMN_NAME "value"
|
||||||
|
|
||||||
/* telnet style API parser */
|
/* telnet style API parser */
|
||||||
static uint64_t HandleId = 0;
|
static uint64_t HandleId = 0;
|
||||||
|
@ -81,12 +81,12 @@ static int32_t parseTelnetTimeStamp(TAOS_SML_KV **pTS, int *num_kvs, const char
|
||||||
const char *start, *cur;
|
const char *start, *cur;
|
||||||
int32_t ret = TSDB_CODE_SUCCESS;
|
int32_t ret = TSDB_CODE_SUCCESS;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
char key[] = OTS_TIMESTAMP_COLUMN_NAME;
|
char key[] = OTD_TIMESTAMP_COLUMN_NAME;
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
|
|
||||||
start = cur = *index;
|
start = cur = *index;
|
||||||
//allocate fields for timestamp and value
|
//allocate fields for timestamp and value
|
||||||
*pTS = tcalloc(MAX_FIELDS_NUM, sizeof(TAOS_SML_KV));
|
*pTS = tcalloc(OTD_MAX_FIELDS_NUM, sizeof(TAOS_SML_KV));
|
||||||
|
|
||||||
while(*cur != '\0') {
|
while(*cur != '\0') {
|
||||||
if (*cur == ' ') {
|
if (*cur == ' ') {
|
||||||
|
@ -127,7 +127,7 @@ static int32_t parseTelnetMetricValue(TAOS_SML_KV **pKVs, int *num_kvs, const ch
|
||||||
const char *start, *cur;
|
const char *start, *cur;
|
||||||
int32_t ret = TSDB_CODE_SUCCESS;
|
int32_t ret = TSDB_CODE_SUCCESS;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
char key[] = OTS_METRIC_VALUE_COLUMN_NAME;
|
char key[] = OTD_METRIC_VALUE_COLUMN_NAME;
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
|
|
||||||
start = cur = *index;
|
start = cur = *index;
|
||||||
|
@ -459,7 +459,7 @@ int32_t parseMetricFromJSON(cJSON *root, TAOS_SML_DATA_POINT* pSml, SSmlLinesInf
|
||||||
|
|
||||||
int32_t parseTimestampFromJSONObj(cJSON *root, int64_t *tsVal, SSmlLinesInfo* info) {
|
int32_t parseTimestampFromJSONObj(cJSON *root, int64_t *tsVal, SSmlLinesInfo* info) {
|
||||||
int32_t size = cJSON_GetArraySize(root);
|
int32_t size = cJSON_GetArraySize(root);
|
||||||
if (size != JSON_SUB_FIELDS_NUM) {
|
if (size != OTD_JSON_SUB_FIELDS_NUM) {
|
||||||
return TSDB_CODE_TSC_INVALID_JSON;
|
return TSDB_CODE_TSC_INVALID_JSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,7 +510,7 @@ int32_t parseTimestampFromJSON(cJSON *root, TAOS_SML_KV **pTS, int *num_kvs, SSm
|
||||||
//Timestamp must be the first KV to parse
|
//Timestamp must be the first KV to parse
|
||||||
assert(*num_kvs == 0);
|
assert(*num_kvs == 0);
|
||||||
int64_t tsVal;
|
int64_t tsVal;
|
||||||
char key[] = OTS_TIMESTAMP_COLUMN_NAME;
|
char key[] = OTD_TIMESTAMP_COLUMN_NAME;
|
||||||
|
|
||||||
cJSON *timestamp = cJSON_GetObjectItem(root, "timestamp");
|
cJSON *timestamp = cJSON_GetObjectItem(root, "timestamp");
|
||||||
if (cJSON_IsNumber(timestamp)) {
|
if (cJSON_IsNumber(timestamp)) {
|
||||||
|
@ -531,7 +531,7 @@ int32_t parseTimestampFromJSON(cJSON *root, TAOS_SML_KV **pTS, int *num_kvs, SSm
|
||||||
}
|
}
|
||||||
|
|
||||||
//allocate fields for timestamp and value
|
//allocate fields for timestamp and value
|
||||||
*pTS = tcalloc(MAX_FIELDS_NUM, sizeof(TAOS_SML_KV));
|
*pTS = tcalloc(OTD_MAX_FIELDS_NUM, sizeof(TAOS_SML_KV));
|
||||||
|
|
||||||
|
|
||||||
(*pTS)->key = tcalloc(sizeof(key), 1);
|
(*pTS)->key = tcalloc(sizeof(key), 1);
|
||||||
|
@ -664,7 +664,7 @@ int32_t parseValueFromJSONObj(cJSON *root, TAOS_SML_KV *pVal, SSmlLinesInfo* inf
|
||||||
int32_t ret = TSDB_CODE_SUCCESS;
|
int32_t ret = TSDB_CODE_SUCCESS;
|
||||||
int32_t size = cJSON_GetArraySize(root);
|
int32_t size = cJSON_GetArraySize(root);
|
||||||
|
|
||||||
if (size != JSON_SUB_FIELDS_NUM) {
|
if (size != OTD_JSON_SUB_FIELDS_NUM) {
|
||||||
return TSDB_CODE_TSC_INVALID_JSON;
|
return TSDB_CODE_TSC_INVALID_JSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -755,7 +755,7 @@ int32_t parseValueFromJSON(cJSON *root, TAOS_SML_KV *pVal, SSmlLinesInfo* info)
|
||||||
int32_t parseMetricValueFromJSON(cJSON *root, TAOS_SML_KV **pKVs, int *num_kvs, SSmlLinesInfo* info) {
|
int32_t parseMetricValueFromJSON(cJSON *root, TAOS_SML_KV **pKVs, int *num_kvs, SSmlLinesInfo* info) {
|
||||||
//skip timestamp
|
//skip timestamp
|
||||||
TAOS_SML_KV *pVal = *pKVs + 1;
|
TAOS_SML_KV *pVal = *pKVs + 1;
|
||||||
char key[] = OTS_METRIC_VALUE_COLUMN_NAME;
|
char key[] = OTD_METRIC_VALUE_COLUMN_NAME;
|
||||||
|
|
||||||
cJSON *metricVal = cJSON_GetObjectItem(root, "value");
|
cJSON *metricVal = cJSON_GetObjectItem(root, "value");
|
||||||
if (metricVal == NULL) {
|
if (metricVal == NULL) {
|
||||||
|
@ -842,7 +842,7 @@ int32_t tscParseJSONPayload(cJSON *root, TAOS_SML_DATA_POINT* pSml, SSmlLinesInf
|
||||||
|
|
||||||
int32_t size = cJSON_GetArraySize(root);
|
int32_t size = cJSON_GetArraySize(root);
|
||||||
//outmost json fields has to be exactly 4
|
//outmost json fields has to be exactly 4
|
||||||
if (size != JSON_FIELDS_NUM) {
|
if (size != OTD_JSON_FIELDS_NUM) {
|
||||||
tscError("OTD:0x%"PRIx64" Invalid number of JSON fields in data point %d", info->id, size);
|
tscError("OTD:0x%"PRIx64" Invalid number of JSON fields in data point %d", info->id, size);
|
||||||
return TSDB_CODE_TSC_INVALID_JSON;
|
return TSDB_CODE_TSC_INVALID_JSON;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue