Coder Social home page Coder Social logo

humlab-sead / sead_query_api Goto Github PK

View Code? Open in Web Editor NEW
2.0 4.0 0.0 37.29 MB

.NET Core port of Query SEAD API

License: Other

C# 90.07% PLpgSQL 7.58% Shell 0.74% Dockerfile 0.20% Makefile 0.39% Jupyter Notebook 1.02%
sead visead sead-api data-publication dotnet-core

sead_query_api's Introduction

SEAD Faceted Query API

GitHub Stars GitHub Issues Current Version Live Demo

This is a .NET Core application that provides a faceted browsing REST API for the SEAD database.

DOI

Change log

See CHANGELOG

Setup

Clone this and run dotnet restore to install all the dependencies.

sead_query_api's People

Contributors

roger-mahler avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sead_query_api's Issues

RANGE facets gets no data from QuerySEAD.

Curl statement to reproduce error:

curl 'http://address-to-dev-server/api/result/load' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://localhost:8080/' -H 'Origin: http://localhost:8080' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' -H 'Content-Type: application/json; charset=UTF-8' --data-binary '{"facetsConfig":{"requestId":8,"requestType":"populate","targetCode":"geochronology","triggerCode":"geochronology","facetConfigs":[{"facetCode":"geochronology","position":1,"picks":[{"pickType":2,"pickValue":370,"text":370},{"pickType":3,"pickValue":293666,"text":293666}],"textFilter":""}]},"resultConfig":{"requestId":8,"sessionId":"1","viewTypeId":"map","aggregateKeys":["site_level"]}}' --compressed

Error description

The dataCollection is empty in the response JSON.

Expected behaviour

The dataCollection attribute should contain all selected sites i.e. same behavior as for calls without selections.

The error occurs only for range-facets. The behavior is correct for discrete facets.

I data->dataCollection arrayen tom. I en request utan selections innehåller dataCollection de valda siterna, vilket är det förväntade resultatet även här.

Detta gäller endast range-facetter, med list-facetter fungerar det som väntat.

Reconstitute of facet configuration fails when /load is called

SEAD Query API fails to deserialize FacetsConfig when /load is called. The API expects a plain JSON string that can be serialized to "FacetsConfig", and fails when enclosed in outer JSON as member "FacetsConfig". This is a changes behavior in the API.

Stöd för metod-filtrerade filter

En "portal" är en viss version av visead som dels ger tillgång till en viss uppsättning filter samt även förändrar alla filters funktion genom att det data som visas i alla filter måste ha en koppling till en metod som är länkad till aktuell portal.

Exempel:
Om portal "Palaeoentomology" är vald och filter "Abundances" är aktiverat så ska alla poster i filtret ha en koppling till någon av metoderna "Palaeoentomology (method_id 3)" eller "Chironomid analysis (method id 6)". Alla poster av abundances som inte har en sådan koppling visas ej i filtret.

Vilka filter som är tillgängliga för en viss portal konfigureras client-side.

Lista över portaler samt deras metoder och filter

  • General

    • Innehåller alla filter, utan metod-filtrering
  • Palaeoentomology

    • Inlcude methods
      • Palaeoentomology (method_id 3)
      • Chironomid analysis (method id 6)
    • Filters:
      • Eco code system
      • Eco code
      • Abundances
      • Geochronology
      • Time periods
      • Seasons
      • Family
      • Genus
      • Taxa
      • Author
      • Feature type
      • Biblio modern
      • Biblio fossil
      • Country
      • Site
      • Sample group
      • rdb_system (no filter today) - fungerar på samma sätt som eco codes
      • rdb_codes (no filter today) - fungerar på samma sätt som eco codes
      • Analysis entity ages (no filter today)
      • tbl_sample_group_sampling_contexts (no filter today)
      • tbl_data_types (no filter today)
  • Archaeobotany

    • Inlcude methods:
      • Plant macrofossil analysis (method_id 8)
      • Vegetation survey (method id 4)
    • Filters:
      • Eco code system
      • Eco code
      • Abundances
      • Geochronology
      • Time periods
      • Seasons
      • Family
      • Genus
      • Taxa
      • Author
      • Feature type
      • Biblio modern
      • Biblio fossil
      • Country
      • Site
      • Sample group
      • Analysis entity ages (no filter today)
      • tbl_sample_group_sampling_contexts (no filter today)
      • tbl_data_types (no filter today)
      • tbl_modification_types (no filter today)
      • tbl_abundance_elements
  • Pollen

    • Inlcude methods:
      • Palynology (method_id 14)
      • Charcoal analysis (method id 15)
      • Non-pollen palynomorphs (method id 21)
    • Filters:
      • Eco code system
      • Eco code
      • Abundances
      • Geochronology
      • Time periods
      • Seasons
      • Family
      • Genus
      • Taxa
      • Author
      • Feature type
      • Biblio modern
      • Biblio fossil
      • Country
      • Site
      • Sample group
      • Analysis entity ages (no filter today)
      • tbl_sample_group_sampling_contexts (no filter today)
      • tbl_data_types (no filter today)
      • tbl_abundance_elements
  • Geoarchaeology

    • Inlcude methods:
      • Loss on ignition (method_id 32)
      • Magnetic susceptibility (method_id 33)
      • Magnetic susceptibility (Low frequency) (method id 35)
      • Magnetic susceptibility (High frequency) (method id 36)
      • Phosphate degrees (method id 37)
      • Phosphate degrees HCL (method id 94)
      • MS loop (method id 106)
    • Filters:
      • MS Heating 550
      • Phosphate p-kvot
      • Geochronology
      • Time periods
      • Feature type
      • Biblio modern
      • Biblio fossil
      • Country
      • Site
      • Sample group
      • Analysis entity ages (no filter today)
      • tbl_sample_group_sampling_contexts (no filter today)
      • tbl_data_types (no filter today)
      • Loss on ignition
      • MS
  • Dendrochronology

    • Inlcude methods:
      • Dendrochronology (method_id 10)
    • Filters:
      • Geochronology
      • Time periods
      • Family
      • Genus
      • Taxa
      • Author
      • Feature type
      • Biblio modern
      • Biblio fossil
      • Country
      • Site
      • Sample group
      • Analysis entity ages (no filter today)
      • tbl_sample_group_sampling_contexts (no filter today)
      • tbl_data_types (no filter today)
      • Talk to Mattias for the rest
  • Ceramic

    • Inlcude methods:
      • ???
    • Filters:
      • Geochronology
      • Time periods
      • Feature type
      • Biblio modern
      • Biblio fossil
      • Country
      • Site
      • Sample group
      • Analysis entity ages (no filter today)
      • tbl_sample_group_sampling_contexts (no filter today)
      • tbl_data_types (no filter today)
      • Talk to Mattias for the rest
  • (Isotopes) - Kommer senare

  • (Biomarkers) - Kommer senare

Very poor performance for multi-select discrete facets

Under certain circumstances the SQL query generated for setups that have at least one discrete facet with multiple picks take a very long time to execute. The query plan seems to be dependent on the order of the inner joined tables. Also which is somewhat peculiar, the query executes much faster if the picks are explicitly cast to strings instead of integers (which also is the primary key). The query plan indicates that the execution order changes for related tables (at least when tbl_locations and tbl_site_locations).

Use inner joins as default in query builder

There is no logical reason (as we can deduce) for the use of left join when facets are compiled to SQL-queries. Currently inner joins are only used when there is a explicit criteria on a table. Since the facet system in essence uses inner joins as filter criteria, this rule is not logical and hence removed until otherwise proven necessary.

Result load fails

VSCODE REST config:

Failing fetch: Site-filter with a pick + MS-filter

POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8

{
"facetsConfig":{
"requestId":2,
"requestType":"populate",
"targetCode":"tbl_denormalized_measured_values_33_0",
"triggerCode":"tbl_denormalized_measured_values_33_0",
"facetConfigs":[
{
"facetCode":"sites",
"position":1,
"picks":[
{
"pickType":1,
"pickValue":261,
"text":261
}
],
"textFilter":""
},
{
"facetCode":"tbl_denormalized_measured_values_33_0",
"position":2,
"picks":[

        ],
        "textFilter":""
     }
  ]

},
"resultConfig":{
"requestId":2,
"sessionId":"1",
"viewTypeId":"map",
"aggregateKeys":[
"site_level"
]
}
}

Missing time data

Timeline implementation requires a time span to be associated with each site. This information should exist in tbl_analysis_entity_ages, but this table is empty. What to do @visead ?

Result load returns 500.

This request payload gives a 500:

{
  "facetsConfig": {
    "requestId": 1,
    "requestType": "populate",
    "targetCode": "sites",
    "triggerCode": "sites",
    "facetConfigs": [
      {
        "facetCode": "sites",
        "position": 1,
        "picks": [],
        "textFilter": ""
      }
    ]
  },
  "resultConfig": {
    "requestId": 1,
    "sessionId": "1",
    "viewTypeId": "map",
    "aggregateKeys": [ "site_level" ]
  }
}

Add support to use UDF in facet specification

Facets can currently only be expressed using views and tables. This makes it very cumbersome to specify when the data has a logical division by some category (e.g. measured values are logically related to a specific method). This has previously been solved by dumping (duplicating) "denormalized" data into a wide table where each category values in a specific column.

A better approach would be to enable use of UDF as facet target tables, and with category(ies) as parameter.

Internal server error (500) on load of MS facet

Command fetch("https://seadserv.humlab.umu.se:8089/api/facets/load" fails:

Header

{
"credentials":"omit",
"headers": {
"accept":"application/json, text/javascript, */*; q=0.01",
"content-type":"application/json; charset=UTF-8",
"sec-fetch-mode":"cors"
},
"referrer":"http://localhost:8080/",
"referrerPolicy":"no-referrer-when-downgrade",
"body":  "see-json-payload-below",
"method":"POST",
"mode":"cors"
};

Payload (body)

{
"requestId":1,
"requestType":"populate",
"targetCode":"tbl_denormalized_measured_values_33_0",
"facetConfigs":[ {
    "facetCode":"tbl_denormalized_measured_values_33_0",
    "position":1,
    "picks":[],
    "textFilter":""
}]
}

MS filter with picks + Site filter results in error

REST:

Testing: MS with picks + Site

POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8
{
  "requestId": 1,
  "requestType": "populate",
  "targetCode": "sites",
  "facetConfigs": [
    {
      "facetCode": "tbl_denormalized_measured_values_33_0",
      "position": 1,
      "picks": [
        {
          "pickType": 2,
          "pickValue": 100,
          "text": 100
        },
        {
          "pickType": 3,
          "pickValue": 200,
          "text": 200
        }
      ],
      "textFilter": ""
    },
    {
      "facetCode": "sites",
      "position": 2,
      "picks": [],
      "textFilter": ""
    }
  ]
}

Error on facet load

Following request results in an internal server error (500)

fetch("https://seadserv.humlab.umu.se:8089/api/facets/load", {"credentials":"omit","headers":{"accept":"application/json, text/javascript, */*; q=0.01","content-type":"application/json; charset=UTF-8","sec-fetch-mode":"cors"},"referrer":"http://localhost:8080/","referrerPolicy":"no-referrer-when-downgrade","body":"{\"requestId\":1,\"requestType\":\"populate\",\"targetCode\":\"sites\",\"facetConfigs\":[{\"facetCode\":\"sites\",\"position\":1,\"picks\":[],\"textFilter\":\"\"}]}","method":"POST","mode":"cors"});

Server failure on multi-country filter select + LOI result load

Internal server error on trying to load Country filter with 2 picks + LOI filter with picks

Example:

Load of Country with 2 picks and LOI range filter picks

POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8

{"facetsConfig":{"requestId":3,"requestType":"populate","targetCode":"tbl_denormalized_measured_values_32","triggerCode":"tbl_denormalized_measured_values_32","facetConfigs":[{"facetCode":"country","position":1,"picks":[{"pickType":1,"pickValue":162,"text":162},{"pickType":1,"pickValue":205,"text":205}],"textFilter":""},{"facetCode":"tbl_denormalized_measured_values_32","position":2,"picks":[{"pickType":2,"pickValue":0.2,"text":0.2},{"pickType":3,"pickValue":8.2,"text":8.2}],"textFilter":""}]},"resultConfig":{"requestId":3,"sessionId":"1","viewTypeId":"tabular","aggregateKeys":["site_level"]}}

Missing data in biblio

This example query returns a result where the biblio_author column is null. In sead_master_8 there is author information for this sample group.

SELECT tbl_sample_group_references.biblio_id,
tbl_sample_group_references.sample_group_reference_id,
tbl_sample_group_references.sample_group_id,
tbl_biblio.authors AS biblio_author,
tbl_biblio.bugs_reference AS biblio_bugs_reference,
tbl_biblio.doi AS biblio_doi,
tbl_biblio.isbn AS biblio_isbn,
tbl_biblio.notes AS biblio_notes,
tbl_biblio.title AS biblio_title,
tbl_biblio.year AS biblio_year,
tbl_biblio.full_reference AS biblio_full_reference,
tbl_biblio.url AS biblio_url
FROM public.tbl_sample_group_references
LEFT JOIN public.tbl_biblio ON tbl_sample_group_references.biblio_id = tbl_biblio.biblio_id
WHERE public.tbl_sample_group_references.sample_group_id = 1

Internal server error on LOI-filter request with picks

fetch("https://seadserv.humlab.umu.se:8089/api/facets/load", {"credentials":"omit","headers":{"accept":"application/json, text/javascript, /; q=0.01","content-type":"application/json; charset=UTF-8","sec-fetch-mode":"cors"},"referrer":"http://localhost:8080/viewstate/Jbmdf7aI","referrerPolicy":"no-referrer-when-downgrade","body":"{\"requestId\":1,\"requestType\":\"populate\",\"targetCode\":\"tbl_denormalized_measured_values_32\",\"facetConfigs\":[{\"facetCode\":\"tbl_denormalized_measured_values_32\",\"position\":1,\"picks\":[50, 100],"textFilter":""}]}","method":"POST","mode":"cors"});

Sample group filter error

REST-plugin config:

Issue with Sample group filter

POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8

{
"facetsConfig":
{"requestId":4,"requestType":"populate","targetCode":"sample_groups","triggerCode":"sample_groups",
"facetConfigs":[{"facetCode":"sample_groups","position":1,"picks":[{"pickType":1,"pickValue":510,"text":510}],"textFilter":""}]},
"resultConfig":{"requestId":4,"sessionId":"1","viewTypeId":"map","aggregateKeys":["site_level"]}}

Add filter descriptions

Would be good to have filter descriptions to make into tooltips when hovering over filters in the menu. This existed in the static JSON filter definition but not in the database and so these are lost when transitioning. The previously defined description (which may need review) can be found in the follow JSON:

[
   {
      "facetGroupKey":"space",
      "displayTitle":"Space",
      "items":[
         {
            "facetCode":"sample_groups",
            "displayTitle":"Sample group",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [
               "sites"
            ],
            "description": "A collection of samples, usually defined by the excavator or collector",
            "enabled": true
         },
         {
            "facetCode":"sites",
            "displayTitle":"Site",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "General name for the excavation or sampling location",
            "enabled": true
         },
         {
            "facetCode":"country",
            "displayTitle":"Country",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "The name of the country, at the time of collection, in which the samples were collected",
            "enabled": true
         }
      ]
   },
   {
      "facetGroupKey":"time",
      "displayTitle":"Time",
      "items":[
         {
            "facetCode":"geochronology",
            "displayTitle":"Geochronology",
            "facetGroupKey":"time",
            "facetTypeKey":"range",
            "aggregateType":"",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Sample ages as retrieved through absolute methods such as radiocarbon dating or other radiometric methods (in method based years before present - e.g. 14C years)",
            "enabled": false
         },

         {
            "facetId":11,
            "facetCode":"relative_age_name",
            "displayTitle":"Time periods",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Age of sample as defined by association with a (often regionally specific) cultural or geological period (in years before present)",
            "enabled": true
         }
      ]
   },
   {
      "facetGroupKey":"ecology",
      "displayTitle":"Ecology",
      "items":[
         {
            "facetCode":"ecocode",
            "displayTitle":"Ecological/cultural category",
            "facetGroupKey":"ecology",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Ecological category (trait) or cultural relevance of organisms based on a classification system",
            "enabled": true

         },
         {
            "facetId":30,
            "facetCode":"ecocode_system",
            "displayTitle":"Eco code system",
            "facetGroupKey":"ecology",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Ecological or cultural organism classification system (which groups items in the ecological/cultural category filter)",
            "enabled": true
         }
      ]
   },
   {
      "facetGroupKey":"method",
      "displayTitle":"Method",
      "items":[
         {
            "facetCode":"tbl_denormalized_measured_values_33_0",
            "displayTitle":"MS ",
            "facetTypeKey":"range",
            "aggregateType":"",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "",
            "enabled": true
         },
         {
            "facetCode":"tbl_denormalized_measured_values_33_82",
            "displayTitle":"MS Heating 550",
            "facetTypeKey":"range",
            "aggregateType":"",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "",
            "enabled": true
         },
         {
            "facetCode":"tbl_denormalized_measured_values_32",
            "displayTitle":"LOI",
            "facetTypeKey":"range",
            "aggregateType":"",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Loss of ignition",
            "enabled": true
         },
         {
            "facetCode":"tbl_denormalized_measured_values_37",
            "displayTitle":"",
            "facetTypeKey":"range",
            "aggregateType":"",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "",
            "enabled": true
         }
      ]
   },
   {
      "facetGroupKey":"taxonomy",
      "displayTitle":"Taxonomy",
      "items":[
         {
            "facetCode":"family",
            "displayTitle":"Family",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Taxonomic family",
            "enabled": true
         },
         {
            "facetCode":"genus",
            "displayTitle":"Genus",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Taxonomic genus (under family)",
            "enabled": true
         },
         {
            "facetCode":"species",
            "displayTitle":"Taxa",
            "facetTypeKey":"discrete",
            "aggregateType":"sum",
            "aggregateTitle":"sum of Abundance",
            "dependencies": [],
            "description": "Taxonomic species (under genus)",
            "enabled": true
         },
         {
            "facetCode":"species_author",
            "displayTitle":"Authority",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Authority of the taxonomic name (not used for all species)",
            "enabled": true
         }
      ]
   },
   {
      "facetGroupKey":"testing",
      "displayTitle":"Testing",
      "items":[
         {
            "facetCode":"dataset_master",
            "displayTitle":"Master datasets",
            "facetTypeKey":"discrete",
            "aggregateType":"count",
            "aggregateTitle":"Number of samples",
            "dependencies": [],
            "description": "Master datasets",
            "enabled": true
         }
      ]
   }
]

Return full data span indicators when loading range filter

When loading a range facet which has selections/picks, the full range of (the range without selections) needs to be hinted at to the client by including just the max & min values.

Like this:
facetObject.fullextent = [0, 2904]

Client can't render the slider properly without this information.

Country filter error

REST-plugin config:

Issue with Country filter

POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8

{"facetsConfig":{"requestId":2,"requestType":"populate","targetCode":"country","triggerCode":"country","facetConfigs":[{"facetCode":"country","position":1,"picks":[{"pickType":1,"pickValue":64,"text":64}],"textFilter":""}]},"resultConfig":{"requestId":2,"sessionId":"1","viewTypeId":"map","aggregateKeys":["site_level"]}}

Improve application logging

SEAD Query API uses .NET core default logging which is very rudimentary. Instead, a better framework (such as Serilog) should be added that improved the logging.

404 on OPTIONS request

Service doesn't support the pre-flight OPTIONS requests being sent when XHR is performed, returning 404 for these.

Iconsistent counts for value spans

When a request is made for data for the MS filter with picks set to 900 => 1200, one of the categories/spans returned is listed as 1034 => 1036 with a count of 5.

When requesting higher resolution data with the span 1030 => 1037, we get the categories 1034 => 1035 and 1035 => 1036 which each has a count of 5 observations.

Shouldn't the 1034 => 1036 category then have a total of 10 observations?

REST configs:

Gives count 5 for span 1034 => 1036

POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8

{
  "requestId": 1,
  "requestType": "populate",
  "targetCode": "tbl_denormalized_measured_values_33_0",
  "facetConfigs": [
    {
      "facetCode": "tbl_denormalized_measured_values_33_0",
      "position": 1,
      "picks": [
        {
          "pickType": 2,
          "pickValue": 900,
          "text": 900
        },
        {
          "pickType": 3,
          "pickValue": 1200,
          "text": 1200
        }
      ],
      "textFilter": ""
    }
  ]
}

Gives count 5 for spans 1034 => 1035 and 1035 => 1036 (total count: 10)

POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8

{
  "requestId": 1,
  "requestType": "populate",
  "targetCode": "tbl_denormalized_measured_values_33_0",
  "facetConfigs": [
    {
      "facetCode": "tbl_denormalized_measured_values_33_0",
      "position": 1,
      "picks": [
        {
          "pickType": 2,
          "pickValue": 1030,
          "text": 1030
        },
        {
          "pickType": 3,
          "pickValue": 1037,
          "text": 1037
        }
      ],
      "textFilter": ""
    }
  ]
}

Range filter api does not return entire dataset

Database (sead_master_8 on db1.humlab.umu.se) contains values up to 2981, but json result only contains values up to 2904.

Response json:

{
  "facetsConfig": {
    "requestId": "1",
    "requestType": "populate",
    "targetCode": "tbl_denormalized_measured_values_33_0",
    "triggerCode": "",
    "facetConfigs": [
      {
        "facetCode": "tbl_denormalized_measured_values_33_0",
        "position": 1,
        "textFilter": "",
        "picks": []
      }
    ]
  },
  "items": [
    {
      "category": "0 => 24",
      "displayName": "0 to 24",
      "name": "0 to 24",
      "count": 42153,
      "extent": [
        0,
        24
      ]
    },
    {
      "category": "24 => 48",
      "displayName": "24 to 48",
      "name": "24 to 48",
      "count": 19340,
      "extent": [
        24,
        48
      ]
    },
    {
      "category": "48 => 72",
      "displayName": "48 to 72",
      "name": "48 to 72",
      "count": 9360,
      "extent": [
        48,
        72
      ]
    },
    {
      "category": "72 => 96",
      "displayName": "72 to 96",
      "name": "72 to 96",
      "count": 3415,
      "extent": [
        72,
        96
      ]
    },
    {
      "category": "96 => 120",
      "displayName": "96 to 120",
      "name": "96 to 120",
      "count": 2498,
      "extent": [
        96,
        120
      ]
    },
    {
      "category": "120 => 144",
      "displayName": "120 to 144",
      "name": "120 to 144",
      "count": 1995,
      "extent": [
        120,
        144
      ]
    },
    {
      "category": "144 => 168",
      "displayName": "144 to 168",
      "name": "144 to 168",
      "count": 1474,
      "extent": [
        144,
        168
      ]
    },
    {
      "category": "168 => 192",
      "displayName": "168 to 192",
      "name": "168 to 192",
      "count": 1195,
      "extent": [
        168,
        192
      ]
    },
    {
      "category": "192 => 216",
      "displayName": "192 to 216",
      "name": "192 to 216",
      "count": 988,
      "extent": [
        192,
        216
      ]
    },
    {
      "category": "216 => 240",
      "displayName": "216 to 240",
      "name": "216 to 240",
      "count": 811,
      "extent": [
        216,
        240
      ]
    },
    {
      "category": "240 => 264",
      "displayName": "240 to 264",
      "name": "240 to 264",
      "count": 689,
      "extent": [
        240,
        264
      ]
    },
    {
      "category": "264 => 288",
      "displayName": "264 to 288",
      "name": "264 to 288",
      "count": 703,
      "extent": [
        264,
        288
      ]
    },
    {
      "category": "288 => 312",
      "displayName": "288 to 312",
      "name": "288 to 312",
      "count": 535,
      "extent": [
        288,
        312
      ]
    },
    {
      "category": "312 => 336",
      "displayName": "312 to 336",
      "name": "312 to 336",
      "count": 508,
      "extent": [
        312,
        336
      ]
    },
    {
      "category": "336 => 360",
      "displayName": "336 to 360",
      "name": "336 to 360",
      "count": 444,
      "extent": [
        336,
        360
      ]
    },
    {
      "category": "360 => 384",
      "displayName": "360 to 384",
      "name": "360 to 384",
      "count": 402,
      "extent": [
        360,
        384
      ]
    },
    {
      "category": "384 => 408",
      "displayName": "384 to 408",
      "name": "384 to 408",
      "count": 343,
      "extent": [
        384,
        408
      ]
    },
    {
      "category": "408 => 432",
      "displayName": "408 to 432",
      "name": "408 to 432",
      "count": 257,
      "extent": [
        408,
        432
      ]
    },
    {
      "category": "432 => 456",
      "displayName": "432 to 456",
      "name": "432 to 456",
      "count": 280,
      "extent": [
        432,
        456
      ]
    },
    {
      "category": "456 => 480",
      "displayName": "456 to 480",
      "name": "456 to 480",
      "count": 205,
      "extent": [
        456,
        480
      ]
    },
    {
      "category": "480 => 504",
      "displayName": "480 to 504",
      "name": "480 to 504",
      "count": 233,
      "extent": [
        480,
        504
      ]
    },
    {
      "category": "504 => 528",
      "displayName": "504 to 528",
      "name": "504 to 528",
      "count": 174,
      "extent": [
        504,
        528
      ]
    },
    {
      "category": "528 => 552",
      "displayName": "528 to 552",
      "name": "528 to 552",
      "count": 253,
      "extent": [
        528,
        552
      ]
    },
    {
      "category": "552 => 576",
      "displayName": "552 to 576",
      "name": "552 to 576",
      "count": 214,
      "extent": [
        552,
        576
      ]
    },
    {
      "category": "576 => 600",
      "displayName": "576 to 600",
      "name": "576 to 600",
      "count": 182,
      "extent": [
        576,
        600
      ]
    },
    {
      "category": "600 => 624",
      "displayName": "600 to 624",
      "name": "600 to 624",
      "count": 134,
      "extent": [
        600,
        624
      ]
    },
    {
      "category": "624 => 648",
      "displayName": "624 to 648",
      "name": "624 to 648",
      "count": 99,
      "extent": [
        624,
        648
      ]
    },
    {
      "category": "648 => 672",
      "displayName": "648 to 672",
      "name": "648 to 672",
      "count": 84,
      "extent": [
        648,
        672
      ]
    },
    {
      "category": "672 => 696",
      "displayName": "672 to 696",
      "name": "672 to 696",
      "count": 77,
      "extent": [
        672,
        696
      ]
    },
    {
      "category": "696 => 720",
      "displayName": "696 to 720",
      "name": "696 to 720",
      "count": 37,
      "extent": [
        696,
        720
      ]
    },
    {
      "category": "720 => 744",
      "displayName": "720 to 744",
      "name": "720 to 744",
      "count": 25,
      "extent": [
        720,
        744
      ]
    },
    {
      "category": "744 => 768",
      "displayName": "744 to 768",
      "name": "744 to 768",
      "count": 26,
      "extent": [
        744,
        768
      ]
    },
    {
      "category": "768 => 792",
      "displayName": "768 to 792",
      "name": "768 to 792",
      "count": 31,
      "extent": [
        768,
        792
      ]
    },
    {
      "category": "792 => 816",
      "displayName": "792 to 816",
      "name": "792 to 816",
      "count": 24,
      "extent": [
        792,
        816
      ]
    },
    {
      "category": "816 => 840",
      "displayName": "816 to 840",
      "name": "816 to 840",
      "count": 32,
      "extent": [
        816,
        840
      ]
    },
    {
      "category": "840 => 864",
      "displayName": "840 to 864",
      "name": "840 to 864",
      "count": 31,
      "extent": [
        840,
        864
      ]
    },
    {
      "category": "864 => 888",
      "displayName": "864 to 888",
      "name": "864 to 888",
      "count": 19,
      "extent": [
        864,
        888
      ]
    },
    {
      "category": "888 => 912",
      "displayName": "888 to 912",
      "name": "888 to 912",
      "count": 10,
      "extent": [
        888,
        912
      ]
    },
    {
      "category": "912 => 936",
      "displayName": "912 to 936",
      "name": "912 to 936",
      "count": 22,
      "extent": [
        912,
        936
      ]
    },
    {
      "category": "936 => 960",
      "displayName": "936 to 960",
      "name": "936 to 960",
      "count": 11,
      "extent": [
        936,
        960
      ]
    },
    {
      "category": "960 => 984",
      "displayName": "960 to 984",
      "name": "960 to 984",
      "count": 9,
      "extent": [
        960,
        984
      ]
    },
    {
      "category": "984 => 1008",
      "displayName": "984 to 1008",
      "name": "984 to 1008",
      "count": 5,
      "extent": [
        984,
        1008
      ]
    },
    {
      "category": "1008 => 1032",
      "displayName": "1008 to 1032",
      "name": "1008 to 1032",
      "count": 1,
      "extent": [
        1008,
        1032
      ]
    },
    {
      "category": "1032 => 1056",
      "displayName": "1032 to 1056",
      "name": "1032 to 1056",
      "count": 8,
      "extent": [
        1032,
        1056
      ]
    },
    {
      "category": "1056 => 1080",
      "displayName": "1056 to 1080",
      "name": "1056 to 1080",
      "count": 13,
      "extent": [
        1056,
        1080
      ]
    },
    {
      "category": "1080 => 1104",
      "displayName": "1080 to 1104",
      "name": "1080 to 1104",
      "count": 6,
      "extent": [
        1080,
        1104
      ]
    },
    {
      "category": "1104 => 1128",
      "displayName": "1104 to 1128",
      "name": "1104 to 1128",
      "count": 7,
      "extent": [
        1104,
        1128
      ]
    },
    {
      "category": "1128 => 1152",
      "displayName": "1128 to 1152",
      "name": "1128 to 1152",
      "count": 5,
      "extent": [
        1128,
        1152
      ]
    },
    {
      "category": "1152 => 1176",
      "displayName": "1152 to 1176",
      "name": "1152 to 1176",
      "count": 5,
      "extent": [
        1152,
        1176
      ]
    },
    {
      "category": "1176 => 1200",
      "displayName": "1176 to 1200",
      "name": "1176 to 1200",
      "count": 3,
      "extent": [
        1176,
        1200
      ]
    },
    {
      "category": "1200 => 1224",
      "displayName": "1200 to 1224",
      "name": "1200 to 1224",
      "count": 7,
      "extent": [
        1200,
        1224
      ]
    },
    {
      "category": "1224 => 1248",
      "displayName": "1224 to 1248",
      "name": "1224 to 1248",
      "count": 2,
      "extent": [
        1224,
        1248
      ]
    },
    {
      "category": "1248 => 1272",
      "displayName": "1248 to 1272",
      "name": "1248 to 1272",
      "count": 8,
      "extent": [
        1248,
        1272
      ]
    },
    {
      "category": "1272 => 1296",
      "displayName": "1272 to 1296",
      "name": "1272 to 1296",
      "count": 10,
      "extent": [
        1272,
        1296
      ]
    },
    {
      "category": "1296 => 1320",
      "displayName": "1296 to 1320",
      "name": "1296 to 1320",
      "count": 0,
      "extent": [
        1296,
        1320
      ]
    },
    {
      "category": "1320 => 1344",
      "displayName": "1320 to 1344",
      "name": "1320 to 1344",
      "count": 0,
      "extent": [
        1320,
        1344
      ]
    },
    {
      "category": "1344 => 1368",
      "displayName": "1344 to 1368",
      "name": "1344 to 1368",
      "count": 0,
      "extent": [
        1344,
        1368
      ]
    },
    {
      "category": "1368 => 1392",
      "displayName": "1368 to 1392",
      "name": "1368 to 1392",
      "count": 8,
      "extent": [
        1368,
        1392
      ]
    },
    {
      "category": "1392 => 1416",
      "displayName": "1392 to 1416",
      "name": "1392 to 1416",
      "count": 0,
      "extent": [
        1392,
        1416
      ]
    },
    {
      "category": "1416 => 1440",
      "displayName": "1416 to 1440",
      "name": "1416 to 1440",
      "count": 0,
      "extent": [
        1416,
        1440
      ]
    },
    {
      "category": "1440 => 1464",
      "displayName": "1440 to 1464",
      "name": "1440 to 1464",
      "count": 2,
      "extent": [
        1440,
        1464
      ]
    },
    {
      "category": "1464 => 1488",
      "displayName": "1464 to 1488",
      "name": "1464 to 1488",
      "count": 3,
      "extent": [
        1464,
        1488
      ]
    },
    {
      "category": "1488 => 1512",
      "displayName": "1488 to 1512",
      "name": "1488 to 1512",
      "count": 0,
      "extent": [
        1488,
        1512
      ]
    },
    {
      "category": "1512 => 1536",
      "displayName": "1512 to 1536",
      "name": "1512 to 1536",
      "count": 0,
      "extent": [
        1512,
        1536
      ]
    },
    {
      "category": "1536 => 1560",
      "displayName": "1536 to 1560",
      "name": "1536 to 1560",
      "count": 0,
      "extent": [
        1536,
        1560
      ]
    },
    {
      "category": "1560 => 1584",
      "displayName": "1560 to 1584",
      "name": "1560 to 1584",
      "count": 2,
      "extent": [
        1560,
        1584
      ]
    },
    {
      "category": "1584 => 1608",
      "displayName": "1584 to 1608",
      "name": "1584 to 1608",
      "count": 0,
      "extent": [
        1584,
        1608
      ]
    },
    {
      "category": "1608 => 1632",
      "displayName": "1608 to 1632",
      "name": "1608 to 1632",
      "count": 0,
      "extent": [
        1608,
        1632
      ]
    },
    {
      "category": "1632 => 1656",
      "displayName": "1632 to 1656",
      "name": "1632 to 1656",
      "count": 0,
      "extent": [
        1632,
        1656
      ]
    },
    {
      "category": "1656 => 1680",
      "displayName": "1656 to 1680",
      "name": "1656 to 1680",
      "count": 0,
      "extent": [
        1656,
        1680
      ]
    },
    {
      "category": "1680 => 1704",
      "displayName": "1680 to 1704",
      "name": "1680 to 1704",
      "count": 3,
      "extent": [
        1680,
        1704
      ]
    },
    {
      "category": "1704 => 1728",
      "displayName": "1704 to 1728",
      "name": "1704 to 1728",
      "count": 0,
      "extent": [
        1704,
        1728
      ]
    },
    {
      "category": "1728 => 1752",
      "displayName": "1728 to 1752",
      "name": "1728 to 1752",
      "count": 1,
      "extent": [
        1728,
        1752
      ]
    },
    {
      "category": "1752 => 1776",
      "displayName": "1752 to 1776",
      "name": "1752 to 1776",
      "count": 5,
      "extent": [
        1752,
        1776
      ]
    },
    {
      "category": "1776 => 1800",
      "displayName": "1776 to 1800",
      "name": "1776 to 1800",
      "count": 0,
      "extent": [
        1776,
        1800
      ]
    },
    {
      "category": "1800 => 1824",
      "displayName": "1800 to 1824",
      "name": "1800 to 1824",
      "count": 0,
      "extent": [
        1800,
        1824
      ]
    },
    {
      "category": "1824 => 1848",
      "displayName": "1824 to 1848",
      "name": "1824 to 1848",
      "count": 5,
      "extent": [
        1824,
        1848
      ]
    },
    {
      "category": "1848 => 1872",
      "displayName": "1848 to 1872",
      "name": "1848 to 1872",
      "count": 0,
      "extent": [
        1848,
        1872
      ]
    },
    {
      "category": "1872 => 1896",
      "displayName": "1872 to 1896",
      "name": "1872 to 1896",
      "count": 0,
      "extent": [
        1872,
        1896
      ]
    },
    {
      "category": "1896 => 1920",
      "displayName": "1896 to 1920",
      "name": "1896 to 1920",
      "count": 2,
      "extent": [
        1896,
        1920
      ]
    },
    {
      "category": "1920 => 1944",
      "displayName": "1920 to 1944",
      "name": "1920 to 1944",
      "count": 0,
      "extent": [
        1920,
        1944
      ]
    },
    {
      "category": "1944 => 1968",
      "displayName": "1944 to 1968",
      "name": "1944 to 1968",
      "count": 0,
      "extent": [
        1944,
        1968
      ]
    },
    {
      "category": "1968 => 1992",
      "displayName": "1968 to 1992",
      "name": "1968 to 1992",
      "count": 0,
      "extent": [
        1968,
        1992
      ]
    },
    {
      "category": "1992 => 2016",
      "displayName": "1992 to 2016",
      "name": "1992 to 2016",
      "count": 0,
      "extent": [
        1992,
        2016
      ]
    },
    {
      "category": "2016 => 2040",
      "displayName": "2016 to 2040",
      "name": "2016 to 2040",
      "count": 5,
      "extent": [
        2016,
        2040
      ]
    },
    {
      "category": "2040 => 2064",
      "displayName": "2040 to 2064",
      "name": "2040 to 2064",
      "count": 0,
      "extent": [
        2040,
        2064
      ]
    },
    {
      "category": "2064 => 2088",
      "displayName": "2064 to 2088",
      "name": "2064 to 2088",
      "count": 0,
      "extent": [
        2064,
        2088
      ]
    },
    {
      "category": "2088 => 2112",
      "displayName": "2088 to 2112",
      "name": "2088 to 2112",
      "count": 0,
      "extent": [
        2088,
        2112
      ]
    },
    {
      "category": "2112 => 2136",
      "displayName": "2112 to 2136",
      "name": "2112 to 2136",
      "count": 0,
      "extent": [
        2112,
        2136
      ]
    },
    {
      "category": "2136 => 2160",
      "displayName": "2136 to 2160",
      "name": "2136 to 2160",
      "count": 0,
      "extent": [
        2136,
        2160
      ]
    },
    {
      "category": "2160 => 2184",
      "displayName": "2160 to 2184",
      "name": "2160 to 2184",
      "count": 0,
      "extent": [
        2160,
        2184
      ]
    },
    {
      "category": "2184 => 2208",
      "displayName": "2184 to 2208",
      "name": "2184 to 2208",
      "count": 0,
      "extent": [
        2184,
        2208
      ]
    },
    {
      "category": "2208 => 2232",
      "displayName": "2208 to 2232",
      "name": "2208 to 2232",
      "count": 0,
      "extent": [
        2208,
        2232
      ]
    },
    {
      "category": "2232 => 2256",
      "displayName": "2232 to 2256",
      "name": "2232 to 2256",
      "count": 0,
      "extent": [
        2232,
        2256
      ]
    },
    {
      "category": "2256 => 2280",
      "displayName": "2256 to 2280",
      "name": "2256 to 2280",
      "count": 0,
      "extent": [
        2256,
        2280
      ]
    },
    {
      "category": "2280 => 2304",
      "displayName": "2280 to 2304",
      "name": "2280 to 2304",
      "count": 0,
      "extent": [
        2280,
        2304
      ]
    },
    {
      "category": "2304 => 2328",
      "displayName": "2304 to 2328",
      "name": "2304 to 2328",
      "count": 0,
      "extent": [
        2304,
        2328
      ]
    },
    {
      "category": "2328 => 2352",
      "displayName": "2328 to 2352",
      "name": "2328 to 2352",
      "count": 0,
      "extent": [
        2328,
        2352
      ]
    },
    {
      "category": "2352 => 2376",
      "displayName": "2352 to 2376",
      "name": "2352 to 2376",
      "count": 0,
      "extent": [
        2352,
        2376
      ]
    },
    {
      "category": "2376 => 2400",
      "displayName": "2376 to 2400",
      "name": "2376 to 2400",
      "count": 0,
      "extent": [
        2376,
        2400
      ]
    },
    {
      "category": "2400 => 2424",
      "displayName": "2400 to 2424",
      "name": "2400 to 2424",
      "count": 0,
      "extent": [
        2400,
        2424
      ]
    },
    {
      "category": "2424 => 2448",
      "displayName": "2424 to 2448",
      "name": "2424 to 2448",
      "count": 0,
      "extent": [
        2424,
        2448
      ]
    },
    {
      "category": "2448 => 2472",
      "displayName": "2448 to 2472",
      "name": "2448 to 2472",
      "count": 0,
      "extent": [
        2448,
        2472
      ]
    },
    {
      "category": "2472 => 2496",
      "displayName": "2472 to 2496",
      "name": "2472 to 2496",
      "count": 0,
      "extent": [
        2472,
        2496
      ]
    },
    {
      "category": "2496 => 2520",
      "displayName": "2496 to 2520",
      "name": "2496 to 2520",
      "count": 0,
      "extent": [
        2496,
        2520
      ]
    },
    {
      "category": "2520 => 2544",
      "displayName": "2520 to 2544",
      "name": "2520 to 2544",
      "count": 0,
      "extent": [
        2520,
        2544
      ]
    },
    {
      "category": "2544 => 2568",
      "displayName": "2544 to 2568",
      "name": "2544 to 2568",
      "count": 0,
      "extent": [
        2544,
        2568
      ]
    },
    {
      "category": "2568 => 2592",
      "displayName": "2568 to 2592",
      "name": "2568 to 2592",
      "count": 0,
      "extent": [
        2568,
        2592
      ]
    },
    {
      "category": "2592 => 2616",
      "displayName": "2592 to 2616",
      "name": "2592 to 2616",
      "count": 0,
      "extent": [
        2592,
        2616
      ]
    },
    {
      "category": "2616 => 2640",
      "displayName": "2616 to 2640",
      "name": "2616 to 2640",
      "count": 0,
      "extent": [
        2616,
        2640
      ]
    },
    {
      "category": "2640 => 2664",
      "displayName": "2640 to 2664",
      "name": "2640 to 2664",
      "count": 0,
      "extent": [
        2640,
        2664
      ]
    },
    {
      "category": "2664 => 2688",
      "displayName": "2664 to 2688",
      "name": "2664 to 2688",
      "count": 0,
      "extent": [
        2664,
        2688
      ]
    },
    {
      "category": "2688 => 2712",
      "displayName": "2688 to 2712",
      "name": "2688 to 2712",
      "count": 0,
      "extent": [
        2688,
        2712
      ]
    },
    {
      "category": "2712 => 2736",
      "displayName": "2712 to 2736",
      "name": "2712 to 2736",
      "count": 0,
      "extent": [
        2712,
        2736
      ]
    },
    {
      "category": "2736 => 2760",
      "displayName": "2736 to 2760",
      "name": "2736 to 2760",
      "count": 0,
      "extent": [
        2736,
        2760
      ]
    },
    {
      "category": "2760 => 2784",
      "displayName": "2760 to 2784",
      "name": "2760 to 2784",
      "count": 0,
      "extent": [
        2760,
        2784
      ]
    },
    {
      "category": "2784 => 2808",
      "displayName": "2784 to 2808",
      "name": "2784 to 2808",
      "count": 0,
      "extent": [
        2784,
        2808
      ]
    },
    {
      "category": "2808 => 2832",
      "displayName": "2808 to 2832",
      "name": "2808 to 2832",
      "count": 0,
      "extent": [
        2808,
        2832
      ]
    },
    {
      "category": "2832 => 2856",
      "displayName": "2832 to 2856",
      "name": "2832 to 2856",
      "count": 0,
      "extent": [
        2832,
        2856
      ]
    },
    {
      "category": "2856 => 2880",
      "displayName": "2856 to 2880",
      "name": "2856 to 2880",
      "count": 0,
      "extent": [
        2856,
        2880
      ]
    },
    {
      "category": "2880 => 2904",
      "displayName": "2880 to 2904",
      "name": "2880 to 2904",
      "count": 5,
      "extent": [
        2880,
        2904
      ]
    }
  ],
  "distribution": {
    "0 => 24": {
      "extent": [
        0,
        24
      ],
      "category": "0 => 24",
      "count": 42153
    },
    "24 => 48": {
      "extent": [
        24,
        48
      ],
      "category": "24 => 48",
      "count": 19340
    },
    "48 => 72": {
      "extent": [
        48,
        72
      ],
      "category": "48 => 72",
      "count": 9360
    },
    "72 => 96": {
      "extent": [
        72,
        96
      ],
      "category": "72 => 96",
      "count": 3415
    },
    "96 => 120": {
      "extent": [
        96,
        120
      ],
      "category": "96 => 120",
      "count": 2498
    },
    "120 => 144": {
      "extent": [
        120,
        144
      ],
      "category": "120 => 144",
      "count": 1995
    },
    "144 => 168": {
      "extent": [
        144,
        168
      ],
      "category": "144 => 168",
      "count": 1474
    },
    "168 => 192": {
      "extent": [
        168,
        192
      ],
      "category": "168 => 192",
      "count": 1195
    },
    "192 => 216": {
      "extent": [
        192,
        216
      ],
      "category": "192 => 216",
      "count": 988
    },
    "216 => 240": {
      "extent": [
        216,
        240
      ],
      "category": "216 => 240",
      "count": 811
    },
    "240 => 264": {
      "extent": [
        240,
        264
      ],
      "category": "240 => 264",
      "count": 689
    },
    "264 => 288": {
      "extent": [
        264,
        288
      ],
      "category": "264 => 288",
      "count": 703
    },
    "288 => 312": {
      "extent": [
        288,
        312
      ],
      "category": "288 => 312",
      "count": 535
    },
    "312 => 336": {
      "extent": [
        312,
        336
      ],
      "category": "312 => 336",
      "count": 508
    },
    "336 => 360": {
      "extent": [
        336,
        360
      ],
      "category": "336 => 360",
      "count": 444
    },
    "360 => 384": {
      "extent": [
        360,
        384
      ],
      "category": "360 => 384",
      "count": 402
    },
    "384 => 408": {
      "extent": [
        384,
        408
      ],
      "category": "384 => 408",
      "count": 343
    },
    "408 => 432": {
      "extent": [
        408,
        432
      ],
      "category": "408 => 432",
      "count": 257
    },
    "432 => 456": {
      "extent": [
        432,
        456
      ],
      "category": "432 => 456",
      "count": 280
    },
    "456 => 480": {
      "extent": [
        456,
        480
      ],
      "category": "456 => 480",
      "count": 205
    },
    "480 => 504": {
      "extent": [
        480,
        504
      ],
      "category": "480 => 504",
      "count": 233
    },
    "504 => 528": {
      "extent": [
        504,
        528
      ],
      "category": "504 => 528",
      "count": 174
    },
    "528 => 552": {
      "extent": [
        528,
        552
      ],
      "category": "528 => 552",
      "count": 253
    },
    "552 => 576": {
      "extent": [
        552,
        576
      ],
      "category": "552 => 576",
      "count": 214
    },
    "576 => 600": {
      "extent": [
        576,
        600
      ],
      "category": "576 => 600",
      "count": 182
    },
    "600 => 624": {
      "extent": [
        600,
        624
      ],
      "category": "600 => 624",
      "count": 134
    },
    "624 => 648": {
      "extent": [
        624,
        648
      ],
      "category": "624 => 648",
      "count": 99
    },
    "648 => 672": {
      "extent": [
        648,
        672
      ],
      "category": "648 => 672",
      "count": 84
    },
    "672 => 696": {
      "extent": [
        672,
        696
      ],
      "category": "672 => 696",
      "count": 77
    },
    "696 => 720": {
      "extent": [
        696,
        720
      ],
      "category": "696 => 720",
      "count": 37
    },
    "720 => 744": {
      "extent": [
        720,
        744
      ],
      "category": "720 => 744",
      "count": 25
    },
    "744 => 768": {
      "extent": [
        744,
        768
      ],
      "category": "744 => 768",
      "count": 26
    },
    "768 => 792": {
      "extent": [
        768,
        792
      ],
      "category": "768 => 792",
      "count": 31
    },
    "792 => 816": {
      "extent": [
        792,
        816
      ],
      "category": "792 => 816",
      "count": 24
    },
    "816 => 840": {
      "extent": [
        816,
        840
      ],
      "category": "816 => 840",
      "count": 32
    },
    "840 => 864": {
      "extent": [
        840,
        864
      ],
      "category": "840 => 864",
      "count": 31
    },
    "864 => 888": {
      "extent": [
        864,
        888
      ],
      "category": "864 => 888",
      "count": 19
    },
    "888 => 912": {
      "extent": [
        888,
        912
      ],
      "category": "888 => 912",
      "count": 10
    },
    "912 => 936": {
      "extent": [
        912,
        936
      ],
      "category": "912 => 936",
      "count": 22
    },
    "936 => 960": {
      "extent": [
        936,
        960
      ],
      "category": "936 => 960",
      "count": 11
    },
    "960 => 984": {
      "extent": [
        960,
        984
      ],
      "category": "960 => 984",
      "count": 9
    },
    "984 => 1008": {
      "extent": [
        984,
        1008
      ],
      "category": "984 => 1008",
      "count": 5
    },
    "1008 => 1032": {
      "extent": [
        1008,
        1032
      ],
      "category": "1008 => 1032",
      "count": 1
    },
    "1032 => 1056": {
      "extent": [
        1032,
        1056
      ],
      "category": "1032 => 1056",
      "count": 8
    },
    "1056 => 1080": {
      "extent": [
        1056,
        1080
      ],
      "category": "1056 => 1080",
      "count": 13
    },
    "1080 => 1104": {
      "extent": [
        1080,
        1104
      ],
      "category": "1080 => 1104",
      "count": 6
    },
    "1104 => 1128": {
      "extent": [
        1104,
        1128
      ],
      "category": "1104 => 1128",
      "count": 7
    },
    "1128 => 1152": {
      "extent": [
        1128,
        1152
      ],
      "category": "1128 => 1152",
      "count": 5
    },
    "1152 => 1176": {
      "extent": [
        1152,
        1176
      ],
      "category": "1152 => 1176",
      "count": 5
    },
    "1176 => 1200": {
      "extent": [
        1176,
        1200
      ],
      "category": "1176 => 1200",
      "count": 3
    },
    "1200 => 1224": {
      "extent": [
        1200,
        1224
      ],
      "category": "1200 => 1224",
      "count": 7
    },
    "1224 => 1248": {
      "extent": [
        1224,
        1248
      ],
      "category": "1224 => 1248",
      "count": 2
    },
    "1248 => 1272": {
      "extent": [
        1248,
        1272
      ],
      "category": "1248 => 1272",
      "count": 8
    },
    "1272 => 1296": {
      "extent": [
        1272,
        1296
      ],
      "category": "1272 => 1296",
      "count": 10
    },
    "1296 => 1320": {
      "extent": [
        1296,
        1320
      ],
      "category": "1296 => 1320",
      "count": 0
    },
    "1320 => 1344": {
      "extent": [
        1320,
        1344
      ],
      "category": "1320 => 1344",
      "count": 0
    },
    "1344 => 1368": {
      "extent": [
        1344,
        1368
      ],
      "category": "1344 => 1368",
      "count": 0
    },
    "1368 => 1392": {
      "extent": [
        1368,
        1392
      ],
      "category": "1368 => 1392",
      "count": 8
    },
    "1392 => 1416": {
      "extent": [
        1392,
        1416
      ],
      "category": "1392 => 1416",
      "count": 0
    },
    "1416 => 1440": {
      "extent": [
        1416,
        1440
      ],
      "category": "1416 => 1440",
      "count": 0
    },
    "1440 => 1464": {
      "extent": [
        1440,
        1464
      ],
      "category": "1440 => 1464",
      "count": 2
    },
    "1464 => 1488": {
      "extent": [
        1464,
        1488
      ],
      "category": "1464 => 1488",
      "count": 3
    },
    "1488 => 1512": {
      "extent": [
        1488,
        1512
      ],
      "category": "1488 => 1512",
      "count": 0
    },
    "1512 => 1536": {
      "extent": [
        1512,
        1536
      ],
      "category": "1512 => 1536",
      "count": 0
    },
    "1536 => 1560": {
      "extent": [
        1536,
        1560
      ],
      "category": "1536 => 1560",
      "count": 0
    },
    "1560 => 1584": {
      "extent": [
        1560,
        1584
      ],
      "category": "1560 => 1584",
      "count": 2
    },
    "1584 => 1608": {
      "extent": [
        1584,
        1608
      ],
      "category": "1584 => 1608",
      "count": 0
    },
    "1608 => 1632": {
      "extent": [
        1608,
        1632
      ],
      "category": "1608 => 1632",
      "count": 0
    },
    "1632 => 1656": {
      "extent": [
        1632,
        1656
      ],
      "category": "1632 => 1656",
      "count": 0
    },
    "1656 => 1680": {
      "extent": [
        1656,
        1680
      ],
      "category": "1656 => 1680",
      "count": 0
    },
    "1680 => 1704": {
      "extent": [
        1680,
        1704
      ],
      "category": "1680 => 1704",
      "count": 3
    },
    "1704 => 1728": {
      "extent": [
        1704,
        1728
      ],
      "category": "1704 => 1728",
      "count": 0
    },
    "1728 => 1752": {
      "extent": [
        1728,
        1752
      ],
      "category": "1728 => 1752",
      "count": 1
    },
    "1752 => 1776": {
      "extent": [
        1752,
        1776
      ],
      "category": "1752 => 1776",
      "count": 5
    },
    "1776 => 1800": {
      "extent": [
        1776,
        1800
      ],
      "category": "1776 => 1800",
      "count": 0
    },
    "1800 => 1824": {
      "extent": [
        1800,
        1824
      ],
      "category": "1800 => 1824",
      "count": 0
    },
    "1824 => 1848": {
      "extent": [
        1824,
        1848
      ],
      "category": "1824 => 1848",
      "count": 5
    },
    "1848 => 1872": {
      "extent": [
        1848,
        1872
      ],
      "category": "1848 => 1872",
      "count": 0
    },
    "1872 => 1896": {
      "extent": [
        1872,
        1896
      ],
      "category": "1872 => 1896",
      "count": 0
    },
    "1896 => 1920": {
      "extent": [
        1896,
        1920
      ],
      "category": "1896 => 1920",
      "count": 2
    },
    "1920 => 1944": {
      "extent": [
        1920,
        1944
      ],
      "category": "1920 => 1944",
      "count": 0
    },
    "1944 => 1968": {
      "extent": [
        1944,
        1968
      ],
      "category": "1944 => 1968",
      "count": 0
    },
    "1968 => 1992": {
      "extent": [
        1968,
        1992
      ],
      "category": "1968 => 1992",
      "count": 0
    },
    "1992 => 2016": {
      "extent": [
        1992,
        2016
      ],
      "category": "1992 => 2016",
      "count": 0
    },
    "2016 => 2040": {
      "extent": [
        2016,
        2040
      ],
      "category": "2016 => 2040",
      "count": 5
    },
    "2040 => 2064": {
      "extent": [
        2040,
        2064
      ],
      "category": "2040 => 2064",
      "count": 0
    },
    "2064 => 2088": {
      "extent": [
        2064,
        2088
      ],
      "category": "2064 => 2088",
      "count": 0
    },
    "2088 => 2112": {
      "extent": [
        2088,
        2112
      ],
      "category": "2088 => 2112",
      "count": 0
    },
    "2112 => 2136": {
      "extent": [
        2112,
        2136
      ],
      "category": "2112 => 2136",
      "count": 0
    },
    "2136 => 2160": {
      "extent": [
        2136,
        2160
      ],
      "category": "2136 => 2160",
      "count": 0
    },
    "2160 => 2184": {
      "extent": [
        2160,
        2184
      ],
      "category": "2160 => 2184",
      "count": 0
    },
    "2184 => 2208": {
      "extent": [
        2184,
        2208
      ],
      "category": "2184 => 2208",
      "count": 0
    },
    "2208 => 2232": {
      "extent": [
        2208,
        2232
      ],
      "category": "2208 => 2232",
      "count": 0
    },
    "2232 => 2256": {
      "extent": [
        2232,
        2256
      ],
      "category": "2232 => 2256",
      "count": 0
    },
    "2256 => 2280": {
      "extent": [
        2256,
        2280
      ],
      "category": "2256 => 2280",
      "count": 0
    },
    "2280 => 2304": {
      "extent": [
        2280,
        2304
      ],
      "category": "2280 => 2304",
      "count": 0
    },
    "2304 => 2328": {
      "extent": [
        2304,
        2328
      ],
      "category": "2304 => 2328",
      "count": 0
    },
    "2328 => 2352": {
      "extent": [
        2328,
        2352
      ],
      "category": "2328 => 2352",
      "count": 0
    },
    "2352 => 2376": {
      "extent": [
        2352,
        2376
      ],
      "category": "2352 => 2376",
      "count": 0
    },
    "2376 => 2400": {
      "extent": [
        2376,
        2400
      ],
      "category": "2376 => 2400",
      "count": 0
    },
    "2400 => 2424": {
      "extent": [
        2400,
        2424
      ],
      "category": "2400 => 2424",
      "count": 0
    },
    "2424 => 2448": {
      "extent": [
        2424,
        2448
      ],
      "category": "2424 => 2448",
      "count": 0
    },
    "2448 => 2472": {
      "extent": [
        2448,
        2472
      ],
      "category": "2448 => 2472",
      "count": 0
    },
    "2472 => 2496": {
      "extent": [
        2472,
        2496
      ],
      "category": "2472 => 2496",
      "count": 0
    },
    "2496 => 2520": {
      "extent": [
        2496,
        2520
      ],
      "category": "2496 => 2520",
      "count": 0
    },
    "2520 => 2544": {
      "extent": [
        2520,
        2544
      ],
      "category": "2520 => 2544",
      "count": 0
    },
    "2544 => 2568": {
      "extent": [
        2544,
        2568
      ],
      "category": "2544 => 2568",
      "count": 0
    },
    "2568 => 2592": {
      "extent": [
        2568,
        2592
      ],
      "category": "2568 => 2592",
      "count": 0
    },
    "2592 => 2616": {
      "extent": [
        2592,
        2616
      ],
      "category": "2592 => 2616",
      "count": 0
    },
    "2616 => 2640": {
      "extent": [
        2616,
        2640
      ],
      "category": "2616 => 2640",
      "count": 0
    },
    "2640 => 2664": {
      "extent": [
        2640,
        2664
      ],
      "category": "2640 => 2664",
      "count": 0
    },
    "2664 => 2688": {
      "extent": [
        2664,
        2688
      ],
      "category": "2664 => 2688",
      "count": 0
    },
    "2688 => 2712": {
      "extent": [
        2688,
        2712
      ],
      "category": "2688 => 2712",
      "count": 0
    },
    "2712 => 2736": {
      "extent": [
        2712,
        2736
      ],
      "category": "2712 => 2736",
      "count": 0
    },
    "2736 => 2760": {
      "extent": [
        2736,
        2760
      ],
      "category": "2736 => 2760",
      "count": 0
    },
    "2760 => 2784": {
      "extent": [
        2760,
        2784
      ],
      "category": "2760 => 2784",
      "count": 0
    },
    "2784 => 2808": {
      "extent": [
        2784,
        2808
      ],
      "category": "2784 => 2808",
      "count": 0
    },
    "2808 => 2832": {
      "extent": [
        2808,
        2832
      ],
      "category": "2808 => 2832",
      "count": 0
    },
    "2832 => 2856": {
      "extent": [
        2832,
        2856
      ],
      "category": "2832 => 2856",
      "count": 0
    },
    "2856 => 2880": {
      "extent": [
        2856,
        2880
      ],
      "category": "2856 => 2880",
      "count": 0
    },
    "2880 => 2904": {
      "extent": [
        2880,
        2904
      ],
      "category": "2880 => 2904",
      "count": 5
    }
  },
  "picks": {},
  "countOfSelections": 0
}

Move system to SEAD server

The Query SEAD API currently uses an old version of the SEAD database located on Humlab's dataserver.

MS filter internal server error

MS filter with selections fails by giving an internal server error.

REST:

Testing MS filter

POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8

{
  "requestId": 1,
  "requestType": "populate",
  "targetCode": "tbl_denormalized_measured_values_33_0",
  "facetConfigs": [
    {
      "facetCode": "tbl_denormalized_measured_values_33_0",
      "position": 1,
      "picks": [100, 200],
      "textFilter": ""
    }
  ]
}

Graph search returns faulty routes

Graph path start node occurs in destination nodes after find of routes is called.

Start node should be filtered out from list of destination nodes (or ignored).

Inclusion of data spans with zero data?

Question: In the example below where the MS filter is loaded without any selections, the last 4 categories/data spans returned have a "count" of 0, why are these included? Should they be? Is it somehow significant to show that there is zero data here?

Testing MS filter

POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8

{
"requestId": 1,
"requestType": "populate",
"targetCode": "tbl_denormalized_measured_values_33_0",
"facetConfigs": [
{
"facetCode": "tbl_denormalized_measured_values_33_0",
"position": 1,
"picks": [
],
"textFilter": ""
}
]
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.