Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

poor SPARQL query performance due to #pragmas #966

Closed
Rdataflow opened this issue Feb 16, 2023 · 1 comment
Closed

poor SPARQL query performance due to #pragmas #966

Rdataflow opened this issue Feb 16, 2023 · 1 comment
Labels
bug Something isn't working

Comments

@Rdataflow
Copy link
Contributor

Rdataflow commented Feb 16, 2023

Describe the bug
First time loading this cube suffers from bad SPARQL query performance due to bad query. The user has to wait ~5000ms longer to have the chart fully loaded due to such kind of queries.

To Reproduce
Steps to reproduce the behavior:

  1. Wait for the LRU cache to be empty
  2. Go to https://int.visualize.admin.ch/create/new?cube=https://environment.ld.admin.ch/foen/nfi/49-20-21/cube/1&debug=true
  3. Click on the debug symbol
  4. Open DataCubeMetadataWithComponentValues
  5. See slowest / topmost SPARQL query (~5000ms)

Expected behavior
quick query

Environment (please complete the following information):

  • Visualize environment and version: [e.g. INT v3.19.5]

Additional context

#pragma describe.strategy cbd
#pragma join.hash off

SELECT DISTINCT ?value
WHERE {
    <https://environment.ld.admin.ch/foen/nfi/49-20-21/cube/1> <https://cube.link/observationSet> ?observationSet .
    ?observationSet <https://cube.link/observation> ?observation .
    ?observation <https://environment.ld.admin.ch/foen/nfi/evaluationType> ?value .
    
            ?observation <https://environment.ld.admin.ch/foen/nfi/est> ?dimension0.
            FILTER ( (?dimension0 = <https://environment.ld.admin.ch/foen/nfi/ClassificationUnit/Est/Total>) )
            ?observation <https://environment.ld.admin.ch/foen/nfi/grid> ?dimension1.
            FILTER ( (?dimension1 = <https://environment.ld.admin.ch/foen/nfi/Grid/N4>) )
            ?observation <https://environment.ld.admin.ch/foen/nfi/unitOfReference> ?dimension2.
            FILTER ( (?dimension2 = <https://ld.admin.ch/country/CHE>) )
  
}

image

GraphQL query

https://int.visualize.admin.ch/api/graphql?query=query%20DataCubeMetadataWithComponentValues(%24iri%3A%20String!%2C%20%24sourceType%3A%20String!%2C%20%24sourceUrl%3A%20String!%2C%20%24locale%3A%20String!%2C%20%24latest%3A%20Boolean%2C%20%24filters%3A%20Filters)%20%7B%0A%20%20dataCubeByIri(%0A%20%20%20%20iri%3A%20%24iri%0A%20%20%20%20sourceType%3A%20%24sourceType%0A%20%20%20%20sourceUrl%3A%20%24sourceUrl%0A%20%20%20%20locale%3A%20%24locale%0A%20%20%20%20latest%3A%20%24latest%0A%20%20)%20%7B%0A%20%20%20%20iri%0A%20%20%20%20title%0A%20%20%20%20publisher%0A%20%20%20%20publicationStatus%0A%20%20%20%20expires%0A%20%20%20%20identifier%0A%20%20%20%20workExamples%0A%20%20%20%20creator%20%7B%0A%20%20%20%20%20%20iri%0A%20%20%20%20%20%20__typename%0A%20%20%20%20%7D%0A%20%20%20%20landingPage%0A%20%20%20%20dimensions(sourceType%3A%20%24sourceType%2C%20sourceUrl%3A%20%24sourceUrl)%20%7B%0A%20%20%20%20%20%20...dimensionMetadata%0A%20%20%20%20%20%20...hierarchyMetadata%0A%20%20%20%20%20%20__typename%0A%20%20%20%20%7D%0A%20%20%20%20measures(sourceType%3A%20%24sourceType%2C%20sourceUrl%3A%20%24sourceUrl)%20%7B%0A%20%20%20%20%20%20...dimensionMetadata%0A%20%20%20%20%20%20...hierarchyMetadata%0A%20%20%20%20%20%20__typename%0A%20%20%20%20%7D%0A%20%20%20%20__typename%0A%20%20%7D%0A%7D%0A%0Afragment%20dimensionMetadata%20on%20Dimension%20%7B%0A%20%20iri%0A%20%20label%0A%20%20description%0A%20%20isNumerical%0A%20%20isKeyDimension%0A%20%20dataType%0A%20%20order%0A%20%20values(sourceType%3A%20%24sourceType%2C%20sourceUrl%3A%20%24sourceUrl%2C%20filters%3A%20%24filters)%0A%20%20unit%0A%20%20related%20%7B%0A%20%20%20%20iri%0A%20%20%20%20type%0A%20%20%20%20__typename%0A%20%20%7D%0A%20%20...hierarchyMetadata%0A%20%20...%20on%20TemporalDimension%20%7B%0A%20%20%20%20timeUnit%0A%20%20%20%20timeFormat%0A%20%20%20%20__typename%0A%20%20%7D%0A%20%20...%20on%20NumericalMeasure%20%7B%0A%20%20%20%20isCurrency%0A%20%20%20%20currencyExponent%0A%20%20%20%20resolution%0A%20%20%20%20isDecimal%0A%20%20%20%20__typename%0A%20%20%7D%0A%7D%0A%0Afragment%20hierarchyMetadata%20on%20Dimension%20%7B%0A%20%20hierarchy(sourceType%3A%20%24sourceType%2C%20sourceUrl%3A%20%24sourceUrl)%20%7B%0A%20%20%20%20...hierarchyValueFields%0A%20%20%20%20children%20%7B%0A%20%20%20%20%20%20...hierarchyValueFields%0A%20%20%20%20%20%20children%20%7B%0A%20%20%20%20%20%20%20%20...hierarchyValueFields%0A%20%20%20%20%20%20%20%20children%20%7B%0A%20%20%20%20%20%20%20%20%20%20...hierarchyValueFields%0A%20%20%20%20%20%20%20%20%20%20children%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20...hierarchyValueFields%0A%20%20%20%20%20%20%20%20%20%20%20%20children%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20...hierarchyValueFields%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20__typename%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20__typename%0A%20%20%20%20%7D%0A%20%20%20%20__typename%0A%20%20%7D%0A%7D%0A%0Afragment%20hierarchyValueFields%20on%20HierarchyValue%20%7B%0A%20%20value%0A%20%20dimensionIri%0A%20%20depth%0A%20%20label%0A%20%20alternateName%0A%20%20hasValue%0A%20%20position%0A%20%20identifier%0A%7D%0A

query variables

{
  "iri": "https://environment.ld.admin.ch/foen/nfi/49-20-21/cube/1",
  "sourceType": "sparql",
  "sourceUrl": "https://int.lindas.admin.ch/query",
  "locale": "de",
  "filters": {
    "https://environment.ld.admin.ch/foen/nfi/unitOfReference": {
      "type": "single",
      "value": "https://ld.admin.ch/country/CHE"
    },
    "https://environment.ld.admin.ch/foen/nfi/est": {
      "type": "single",
      "value": "https://environment.ld.admin.ch/foen/nfi/ClassificationUnit/Est/Total"
    },
    "https://environment.ld.admin.ch/foen/nfi/grid": {
      "type": "single",
      "value": "https://environment.ld.admin.ch/foen/nfi/Grid/N4"
    },
    "https://environment.ld.admin.ch/foen/nfi/evaluationType": {
      "type": "single",
      "value": "https://environment.ld.admin.ch/foen/nfi/EvaluationType/1"
    },
    "https://environment.ld.admin.ch/foen/nfi/inventory": {
      "type": "single",
      "value": "https://environment.ld.admin.ch/foen/nfi/Inventory/150"
    }
  },
  "filterKeys": "https://environment.ld.admin.ch/foen/nfi/unitOfReference, https://environment.ld.admin.ch/foen/nfi/est, https://environment.ld.admin.ch/foen/nfi/grid, https://environment.ld.admin.ch/foen/nfi/evaluationType, https://environment.ld.admin.ch/foen/nfi/inventory"
}
@Rdataflow Rdataflow added the bug Something isn't working label Feb 16, 2023
@Rdataflow
Copy link
Contributor Author

Rdataflow commented Feb 17, 2023

Things become confusing, they don't reproduce the same way today.
While the above queries both are rapid as of now other ones became slow instead... https://s.zazuko.com/2w6pgYU which takes > 5s
Although it won't improve dropping the pragma inthat query 🤔
... thus we need think more on how to improve ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant