influxdata / influxdb-gds-connector

Google Data Studio Connector for InfluxDB.
MIT License
11 stars 4 forks source link

feat: use new Schema Query #9

Closed bednar closed 2 years ago

bednar commented 3 years ago

Closes #7 Closes #8

Proposed Changes

bucket = "my-bucket" measurement = "my-measurement" start_range = duration(v: uint(v: 1970-01-01) - uint(v: now()))

v1.tagKeys( bucket: bucket, predicate: (r) => r._measurement == measurement, start: start_range ) |> filter(fn: (r) => r._value != "_start" and r._value != "_stop" and r._value != "_measurement" and r._value != "_field") |> yield(name: "tags")

from(bucket: bucket) |> range(start: start_range) |> filter(fn: (r) => r["_measurement"] == measurement) |> keep(fn: (column) => column == "_field" or column == "_value") |> unique(column: "_field") |> yield(name: "fields")


- [x] Add real data to test case:
   - [2020-11-20-10-42_chronograf_data.txt](https://github.com/influxdata/influxdb-gds-connector/files/5572650/2020-11-20-10-42_chronograf_data.txt)
   - [2020-11-13-10-12_chronograf_data.txt](https://github.com/influxdata/influxdb-gds-connector/files/5572637/2020-11-13-10-12_chronograf_data.txt)
- [x] Add Parameter to limit range of schema queries:
![datastudio-schema-query-range](https://user-images.githubusercontent.com/455137/119783607-a920bc00-becd-11eb-91e3-4a8ed01d9954.png)
- [x] Print "user friendly" error message
![error-message](https://user-images.githubusercontent.com/455137/119826467-55779800-bef8-11eb-918e-8ff69f87c77b.png)
- [x] Print correct error when the request timeout
- [x] Update docs with description how to GDS works with queries
- [x] Prepare a dev version of Connector

-----

**The testing version of Connector**: 

https://datastudio.google.com/u/0/datasources/create?connectorId=AKfycbySDF4eD7wmA_awZ6aoCwENuXs1Opw_T0DIJ8F-MVI

-----

## Checklist

<!-- Checkboxes below this note can be erased if not applicable to your Pull Request. -->

- [x] CHANGELOG.md updated
- [x] Rebased/mergeable
- [x] A test has been added if appropriate
- [x] `yarn test` completes successfully
- [x] Commit messages are in [semantic format](https://seesparkbox.com/foundry/semantic_commit_messages)
- [x] Sign [CLA](https://influxdata.com/community/cla/) (if not already signed)
codecov-commenter commented 3 years ago

Codecov Report

Merging #9 (5719a2f) into master (13c02d2) will increase coverage by 0.75%. The diff coverage is 88.69%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master       #9      +/-   ##
==========================================
+ Coverage   81.87%   82.63%   +0.75%     
==========================================
  Files           2        2              
  Lines         298      357      +59     
  Branches       56       77      +21     
==========================================
+ Hits          244      295      +51     
- Misses         49       55       +6     
- Partials        5        7       +2     
Impacted Files Coverage Δ
src/Connector.js 35.78% <7.69%> (-2.85%) :arrow_down:
src/InfluxDBClient.js 99.61% <99.01%> (-0.39%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 13c02d2...5719a2f. Read the comment docs.

rhajek commented 3 years ago

For InfluxDB Cloud1 x-influxdb-build: ENT x-influxdb-version: 1.9.0-c1.9.0

I also got the error:

Cannot retrieve a Schema of your Measurement. InfluxDB Error Response: "expected reader in state ReadPoints, was in state ReadSeries".

Requested Query: "import "influxdata/influxdb/v1" bucket = "telegraf/two_weeks" measurement = "cpu" start_range = -1d v1.tagKeys( bucket: bucket, predicate: (r) => r._measurement == measurement, start: start_range ) |> filter(fn: (r) => r._value != "_start" and r._value != "_stop" and r._value != "_measurement" and r._value != "_field") |> yield(name: "tags") from(bucket: bucket) |> range(start: start_range) |> filter(fn: (r) => r["_measurement"] == measurement) |> keep(fn: (column) => column == "_field" or column == "_value") |> unique(column: "_field") |> yield(name: "fields")"

Next error after reconnect:

Cannot retrieve a Schema of your Measurement. InfluxDB Error Response: "panic: unreachable cursor type: ". Requested Query: "import "influxdata/influxdb/v1" bucket = "telegraf/two_weeks" measurement = "cpu" start_range = -1d v1.tagKeys( bucket: bucket, predicate: (r) => r._measurement == measurement, start: start_range ) |> filter(fn: (r) => r._value != "_start" and r._value != "_stop" and r._value != "_measurement" and r._value != "_field") |> yield(name: "tags") from(bucket: bucket) |> range(start: start_range) |> filter(fn: (r) => r["_measurement"] == measurement) |> keep(fn: (column) => column == "_field" or column == "_value") |> unique(column: "_field") |> yield(name: "fields")"

bednar commented 3 years ago

@rhajek database is upgraded to 1.9.1 - no more errors