A Python library to simplify Hasura, GraphQL and Machine Learning
Project description
PyHasura
A library for conveniently working with Hasura, GraphQL, File Formats, and some basic Machine Learning.
Getting Started
HasuraClient
# Create Hasura Client
import os
from dotenv import load_dotenv
from pyhasura import gql_client, HasuraClient, ExportFormat
from pprint import pprint
load_dotenv() # Load environment variables from .env
hasura_client = HasuraClient(uri=os.environ.get("HASURA_URI"), admin_secret=os.environ.get("HASURA_ADMIN_SECRET"))
Query for a Result
result = hasura_client.execute("""
query findCarts {
carts {
is_complete
cart_items {
quantity
product {
price
}
}
}
cart_items {
id
}
}
""")
pprint(result)
Convert Results to a Dictionary of Alternate Formats
result = hasura_client.convert_output_format(ExportFormat.ARROW)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.CSV)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.PARQUET)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.DATAFRAME)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.FLAT)
pprint(result)
Write Results, one file for each root entry in the query
result = hasura_client.write_to_file(output_format=ExportFormat.ARROW)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.CSV)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.PARQUET)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.FLAT)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.NATURAL)
pprint(result)
Detect Anomalies
Uses DictVectorizer. Assumes text is categorical, or enumerators. To Do - allow an alternate vectorizer - e.g. Word2Vec. To include more semantic meaning in anomaly detection.
result = hasura_client.anomalies()
pprint(result)
result = hasura_client.anomalies(threshold=.03)
pprint(result)
Train and Serialize then Re-Use for Anomaly Detection
Typically, do this to train on some historical dataset and then search for anomalies in an alternate (maybe current) dataset.
result = hasura_client.anomalies_training()
pprint(result)
result = hasura_client.anomalies(training_files=result, threshold=0)
pprint(result)
Clustering
Uses KMedoids clustering. You are always working on a dictionary of datasets. You need to define the number of clusters for each dataset in a corresponding input dictionary. You can auto-generate the optimal number of clusters and use that as the input.
result = hasura_client.optimal_number_of_clusters(1,8)
pprint(result)
result = hasura_client.clusters(result)
pprint(result)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyhasura-1.0.22-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9801c08e76997b9d91ddd93087413cae1ba0bdb9c60519dc0cb96add3cbedd8 |
|
MD5 | 64d8cfb1878f7fe11474427c25c1e062 |
|
BLAKE2b-256 | 0a8c14882837694d0b0d2f56c9b0312ec3bf40ae07736c7857b33827faf43b6d |