getClassNumberStringKeysByClassName.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. var input = JSON.parse(decodeURIComponent(INPUT));
  2. // 查出指定类的bucket属性
  3. var classKeysList = function(){
  4. try{
  5. var rtn = _.filter(_.map(odb.classfields(input.class),function(v){
  6. // 获取bucket属性
  7. // && !v.Name.match(/_baseline/)
  8. if(v.Btype == 'tsdb' && v.Name && v.Ftype == 'bucket'){
  9. var subKeys = [];
  10. var subKeysMql = "";
  11. // 获取子对象
  12. // 根据index查看是否有crc定义
  13. var item = v.Params[v['CRC']];
  14. if(!_.isEmpty(item)){
  15. // 子对象
  16. subKeys = getSubObj(v.Name, item.Name).result;
  17. // debug用
  18. subKeysMql = getSubObj(v.Name, item.Name).mql;
  19. }
  20. var params = _.filter(_.map(v.Params,function(val,idx){
  21. if(val.Type != 'string'){
  22. return {value: val.Name, label:val.Name, ftype:val.Type, unit: val.Unit?val.Unit:"" };
  23. }
  24. }),null);
  25. return {value: v.Name, label: v.Name, ftype: v.Ftype, children:params, subKeys: subKeys, trace: subKeysMql};
  26. }
  27. }),null);
  28. return rtn;
  29. } catch(err){
  30. return err;
  31. }
  32. };
  33. // 获取子对象
  34. // meta中定义的crc,指定了哪个bucket属性有子对象
  35. // SELECT id,disk1_perf[1].time('2020-06-01','').distinct() FROM /matrix/entity/it/it_aix where id='it_aix:192.168.190.175'
  36. var getSubObj = function(bucket,bucketKey){
  37. var mql = "";
  38. try{
  39. // 当月
  40. var current_month = new Date().toISOString().slice(0, 7);
  41. mql = "SELECT "+bucket+"['"+bucketKey+"'].time('"+current_month+"','').distinct() FROM "+input.class+" where id='"+input.entity+"'";
  42. var rtn = _.map(_.flatten(odb.mql(mql).data[0][bucket]),function(v){
  43. return {name:v, value: bucketKey+"='"+v+"'"};
  44. });
  45. return {result:rtn, mql:mql};
  46. } catch(err){
  47. return {result:[], mql:mql};;
  48. }
  49. }
  50. OUTPUT = classKeysList();