[TD-6443]<feature>: Support OpenTSDB HTTP JSON data import format
This commit is contained in:
parent
4b9b44d0eb
commit
438fc24eb7
|
@ -14,6 +14,8 @@
|
||||||
#include "tscParseLine.h"
|
#include "tscParseLine.h"
|
||||||
|
|
||||||
#define MAX_FILEDS_NUM 2
|
#define MAX_FILEDS_NUM 2
|
||||||
|
#define JSON_FIELDS_NUM 4
|
||||||
|
|
||||||
#define OTS_TIMESTAMP_COLUMN_NAME "ts"
|
#define OTS_TIMESTAMP_COLUMN_NAME "ts"
|
||||||
#define OTS_METRIC_VALUE_COLUMN_NAME "value"
|
#define OTS_METRIC_VALUE_COLUMN_NAME "value"
|
||||||
|
|
||||||
|
@ -606,7 +608,7 @@ int32_t parseTagsFromJSON(cJSON *root, TAOS_SML_KV **pKVs, int *num_kvs, char **
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tscParseJSONPayload(const char* payload, TAOS_SML_DATA_POINT* smlData, SSmlLinesInfo* info) {
|
int32_t tscParseJSONPayload(const char* payload, TAOS_SML_DATA_POINT* pSml, SSmlLinesInfo* info) {
|
||||||
int32_t ret = TSDB_CODE_SUCCESS;
|
int32_t ret = TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
if (payload == NULL) {
|
if (payload == NULL) {
|
||||||
|
@ -620,5 +622,44 @@ int32_t tscParseJSONPayload(const char* payload, TAOS_SML_DATA_POINT* smlData, S
|
||||||
return TSDB_CODE_TSC_INVALID_JSON;
|
return TSDB_CODE_TSC_INVALID_JSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
int32_t size = cJSON_GetArraySize(root);
|
||||||
|
//outmost json fields has to be exactly 4
|
||||||
|
if (size != JSON_FIELDS_NUM) {
|
||||||
|
tscError("OTD:0x%"PRIx64" Invalid num of JSON fields in payload %d", info->id, size);
|
||||||
|
return TSDB_CODE_TSC_INVALID_JSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Parse metric
|
||||||
|
ret = parseMetricFromJSON(root, pSml, info);
|
||||||
|
if (ret != TSDB_CODE_SUCCESS) {
|
||||||
|
tscError("OTD:0x%"PRIx64" Unable to parse metric from JSON payload", info->id);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
tscDebug("OTD:0x%"PRIx64" Parse metric from JSON payload finished", info->id);
|
||||||
|
|
||||||
|
//Parse timestamp
|
||||||
|
ret = parseTimestampFromJSON(root, &pSml->fields, &pSml->fieldNum, info);
|
||||||
|
if (ret) {
|
||||||
|
tscError("OTD:0x%"PRIx64" Unable to parse timestamp from JSON payload", info->id);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
tscDebug("OTD:0x%"PRIx64" Parse timestamp from JSON payload finished", info->id);
|
||||||
|
|
||||||
|
//Parse metric value
|
||||||
|
ret = parseMetricValueFromJSON(root, &pSml->fields, &pSml->fieldNum, info);
|
||||||
|
if (ret) {
|
||||||
|
tscError("OTD:0x%"PRIx64" Unable to parse metric value from JSON payload", info->id);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
tscDebug("OTD:0x%"PRIx64" Parse metric value from JSON payload finished", info->id);
|
||||||
|
|
||||||
|
//Parse tags
|
||||||
|
ret = parseTagsFromJSON(root, &pSml->tags, &pSml->tagNum, &pSml->childTableName, info);
|
||||||
|
if (ret) {
|
||||||
|
tscError("OTD:0x%"PRIx64" Unable to parse tags from JSON payload", info->id);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
tscDebug("OTD:0x%"PRIx64" Parse tags from JSON payload finished", info->id);
|
||||||
|
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue