Skip to content

Add query example for pyarrow.flight FlightClient #4926

Open
@jstirnaman

Description

@jstirnaman

Provide a v3 query example using pyarrow.flight FlightClient.
Add pyarrow.flight to Flight SQL clients reference.

Some sample code that doesn't yet work. Token authentication still apparently requires middleware or inserting the auth header in a way that isn't clear in the docs or code.

from pyarrow.flight import FlightClient, Ticket, \
  FlightCallOptions, Action, \
  ClientMiddleware
import json
import pandas as pd
import os


DATABASE_NAME = os.getenv('CLOUD_SERVERLESS_BUCKET_NAME')
DATABASE_TOKEN = os.getenv('CLOUD_SERVERLESS_READ_WRITE_TOKEN')
INFLUXDB_HOST=os.getenv('CLOUD_SERVERLESS_HOST')

# influxql = "SELECT MEAN(elapsed) FROM home WHERE time >= '2023-04-07 19:35:19.314571143' AND time <= '2023-04-07 21:51:29.638717686' GROUP BY time(10m)"

client = FlightClient(f"grpc+tls://{INFLUXDB_HOST}:443")
token_bytes = bytes(f"Bearer {DATABASE_TOKEN}".encode('utf-8'))
token_pair = (b'authorization', token_bytes)
database = (b'database', bytes(DATABASE_NAME.encode('utf-8')))
options = FlightCallOptions(headers=[token_pair, database])

# do_action = client.do_action(action, options)

# client.authenticate(options)

def test_sql_query():
  
  sql = "SELECT * FROM home where room like 'telegraf%'"
  
  ticket_data = {
    "sql_query": sql,
    "query_type": "sql"
  }
  
  ticket_bytes = json.dumps(ticket_data)
  ticket = Ticket(ticket_bytes)
  reader = client.do_get(ticket=ticket, options=options)
  arrow_table = reader.read_all()
  # data_frame = arrow_table.to_pandas()
  # print(data_frame.to_markdown())

test_sql_query()
Relevant URLs
  • Provide relevant URLs (issues, community threads, existing doc pages, etc.)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions