1.0.30 • Published 12 months ago

goodt-dremio-sdk v1.0.30

Weekly downloads
36
License
ISC
Repository
-
Last release
12 months ago

Dremio SDK

Данный документ описывает frontend спецификацию sdk для работы с микросервисом dremio. Актуальная документация: https://dremio-sdk.netlify.app

Сборка проекта (umd module):

npm run build

Генерация актуальной документации:

npm run docs

Quick start

import { SDK } from 'goodt-dremio-sdk';

let query = {
    $fields: {},
    $from: ['my-dataset'],
    $metrics: [],
    $dimensions: [],
    $filters: [],
    $sort: []
};
let sdk = new sdk.SDK({ host: 'http://localhost:4000' });
sdk.getData(query)
    .then(data => console.log(data))
    .catch(e => console.log(e));

Сущности dremio

В рамках данного документа все сущности dremio указываются с префиксом dremio.

dremio.CatalogEntity

К ним относятся сущности:


Сущности sdk

IQuerySchema

/**
 * IQuerySchema
 * @typedef {Object} IQuerySchema
 * @property {Array.<String>} $from             dremio.Dataset path
 * @property {IFields} $fields                  поля
 * @property {Array.<IMetric>} $metrics         метрики
 * @property {Array.<IDimension>} $dimensions   измерения
 * @property {Array.<IFilter>} $filters         фильтры
 * @property {Array.<ISort>} $sort              сортировка
 */
let IQuerySchema = {
  $from: [ <dataset_path> ],
  $fields: {}
  $metrics: [ IMetric ]
  $dimensions: [ IDimension ]
  $filters: [ IFilter ]
  $sort: [ ISort ]
}

IFields

/**
 * @typedef {Object} IFields
 * @property {String} <field-name>      соответствие field -> column
 */
let IColumn = {
    [<field-name>]: <column-name>
};

Пример:

{
  "My field": "id"
}

IMetric

/**
 * IMetric
 * @typedef {Object} IMetric
 * @property {IMetricDef} <metric-name>      метрика
 */
let IMetric = {
    [<metric-name>]: IMetricDef
};

IMetricDef

/**
 * @typedef {Object} IMetricDef
 * @property {String} <IMetricDef.TYPE.*>      название поля
 */
let IMetricDef = {
  [IMetricDef.TYPE.*]: <field-name>,
};
IMetricDef.TYPE = {
  VALUE: "$v",
  EXPRESSION: "$exp",
  AVG: "$avg",
  COUNT: "$count",
  MAX: "$max",
  MIN: "$min",
  SUM: "$sum",
  GROUP_CONCAT: "$gc",
  GROUP_CONCAT_UNIQ: "$gcu",
}

Пример

{
    "$sum": "column";
}

IDimension

/**
 * IDimension
 * @typedef {Object} IDimension
 * @property {String} <dimension-name>      название поля
 */
let IDimension = {
    [<dimension-name>]: <field-name>
};

Пример

{
    "My dimension": "column";
}

IFilter

/**
 * @typedef {Object} IFilter
 * @property {IFilterDef} <field/metric/dimension-name>      описание условия
 */
let IWhere = {
    [<field/metric/dimension-name>]: IFilterDef
};

Пример

{
    "My dimension": { $in: [ 1,2,3 ] };
}

IFilterDef

/**
 * @typedef {Object} IFilterDef
 * @property {Array} <IFilterDef.TYPE.*>      значения
 */
let IFilterDef = {
  [IFilterDef.TYPE.*]: <values>,
};
IFilterDef.TYPE = {
  EQ: "$eq",
  EQ_NOT: "$eqn",
  LESS: "$lt",
  LESS_EQ: "$ltq",
  GREATER: "$gt",
  GREATER_EQ: "$gtq",
  IN: "$in",
  IN_NOT: "$inn",
  BETWEEN: "$btw",
  BETWEEN_NOT: "$btwn",
  LIKE: "$lk"
}

Пример

{
    $in: [1, 2, 3];
}

ISort

/**
 * @typedef {Object} ISort
 * @property {string} <alias>      направление сортировки
 */
let ISort = {
  [alias]: ISort.SORT.*,
};
ISort.SORT = {
  ASC: "asc",
  DESC: "desc"
}

Пример

{
  "Фамилия": "asc";
}

Пример IQuerySchema

{
  "$from": [
    "test",
    "zips"
  ],
  "$fields": {
    "ид": "_id",
    "штат": "state",
    "город": "city",
    "популяция": "pop"
  },
  "$metrics": [
    {
      "кол-во городов": {
        "$count": "город"
      }
    }
  ],
  "$dimensions": [
    {
      "название штата": "штат"
    }
  ],
  "$filters": [
    {
      "популяция": {
        "$gt": [
          50000
        ]
      }
    }
  ],
  "$sort": [
    {
      "кол-во городов": "desc"
    }
  ]
}
1.0.30

12 months ago

1.0.28-alpha.16

1 year ago

1.0.30-alpha.1

1 year ago

1.0.30-alpha.2

1 year ago

1.0.30-alpha.3

1 year ago

1.0.30-alpha.4

1 year ago

1.0.30-alpha.5

1 year ago

1.0.29

1 year ago

1.0.28

1 year ago

1.0.28-alpha.15

1 year ago

1.0.28-alpha.2

1 year ago

1.0.28-alpha.3

1 year ago

1.0.28-alpha.1

1 year ago

1.0.28-alpha.6

1 year ago

1.0.28-alpha.7

1 year ago

1.0.28-alpha.4

1 year ago

1.0.28-alpha.8

1 year ago

1.0.28-alpha.9

1 year ago

1.0.28-alpha.13

1 year ago

1.0.28-alpha.14

1 year ago

1.0.28-alpha.11

1 year ago

1.0.28-alpha.12

1 year ago

1.0.28-alpha.10

1 year ago

1.0.26

1 year ago

1.0.25

1 year ago

1.0.27

1 year ago

1.0.24

2 years ago

1.0.23-alpha.5

2 years ago

1.0.23-alpha.6

2 years ago

1.0.23

2 years ago

1.0.23-alpha.1

2 years ago

1.0.22

2 years ago

1.0.23-alpha.2

2 years ago

1.0.23-alpha.3

2 years ago

1.0.23-alpha.4

2 years ago

1.0.21

3 years ago

1.0.20

3 years ago

1.0.19

3 years ago

1.0.18

3 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago