roboto.roboto_search#
Module Contents#
- class roboto.roboto_search.RobotoSearch(query_client=None)#
A high-level interface for querying the Roboto data platform.
In most cases, using this class should be as simple as:
>>> from roboto import RobotoSearch >>> rs = RobotoSearch() >>> for dataset in rs.find_datasets(...): ... ...
- Parameters:
query_client (Optional[roboto.query.QueryClient])
- find_collections(query=None, timeout_seconds=math.inf)#
- Parameters:
query (Optional[roboto.query.Query])
timeout_seconds (float)
- Return type:
collections.abc.Generator[roboto.domain.collections.Collection, None, None]
- find_datasets(query=None, content_mode=QueryContentMode.RecordOnly, timeout_seconds=math.inf)#
- Parameters:
query (Optional[roboto.query.Query])
content_mode (roboto.query.QueryContentMode)
timeout_seconds (float)
- Return type:
collections.abc.Generator[roboto.domain.datasets.Dataset, None, None]
- find_events(query=None, timeout_seconds=math.inf)#
- Parameters:
query (Optional[roboto.query.Query])
timeout_seconds (float)
- Return type:
collections.abc.Generator[roboto.domain.events.Event]
- find_files(query=None, timeout_seconds=math.inf)#
- Parameters:
query (Optional[roboto.query.Query])
timeout_seconds (float)
- Return type:
collections.abc.Generator[roboto.domain.files.File, None, None]
- find_message_paths(query=None, timeout_seconds=math.inf)#
- Parameters:
query (Optional[roboto.query.Query])
timeout_seconds (float)
- Return type:
collections.abc.Generator[roboto.domain.topics.MessagePath, None, None]
- find_sessions(query=None, timeout_seconds=math.inf)#
Yield
Sessionobjects matchingquery, one at a time.Submits
queryagainst the structured-query API targeting Sessions and lazily materializes each row into aSessioninstance bound to the caller’sRobotoClient. Iteration drives server-side pagination under the hood;timeout_secondsbounds the total wall-clock time spent waiting for query results before iteration stops.Filterable fields:
session_id(aliasid).name.min_timestamp_ns(aliasstart_time) — inclusive lower bound of the session’s recorded time window.max_timestamp_ns(aliasend_time) — inclusive upper bound of the session’s recorded time window.duration— synthetic numeric field equal tomax_timestamp_ns - min_timestamp_ns; accepts integer nanoseconds only.dataset.dataset_id(aliasdataset.id) — matches sessions that include at least one file from the given dataset.=/!=only.device.device_id(aliasdevice.id) — matches sessions attached to the given device.=/!=only.metric.<name>(aliasmetrics.<name>) — matches sessions by a session metric named<name>; dots are part of the metric name (e.g.metric.cpu.load.max). Accepts value and existence comparators. The value comparators=,!=,>,>=,<,<=require a numeric value, and only match sessions that have the metric and whose value satisfies the comparison. The presence comparators take no value:IS_NOT_NULL/EXISTSmatch sessions that have the metric (any value);IS_NULL/NOT_EXISTSmatch sessions that lack it.
The four time-window fields accept any shape
roboto.time.Timepermits — integer epoch nanoseconds, float / Decimal /<sec>.<nsec>string seconds, ISO8601 strings, or tz-awaredatetime— and the server normalizes the value to epoch nanoseconds before the comparison runs.Sortable fields:
session_id,min_timestamp_ns, andduration.- Parameters:
query (Optional[roboto.query.Query])
timeout_seconds (float)
- Return type:
collections.abc.Generator[roboto.domain.sessions.Session, None, None]
- find_topics(query=None, timeout_seconds=math.inf)#
Examples
>>> import matplotlib.pyplot as plt >>> from roboto import RobotoSearch >>> robosearch = RobotoSearch() >>> for topic in robosearch.find_topics("msgpaths[cpuload.load].max > 0.9"): ... df = topic.get_data_as_df(message_paths_include=["cpuload.load"]) ... plt.plot(df.index, df["cpuload.load"], label=topic.topic_id) >>> plt.legend() >>> plt.show()
- Parameters:
query (Optional[roboto.query.Query])
timeout_seconds (float)
- Return type:
collections.abc.Generator[roboto.domain.topics.Topic, None, None]
- classmethod for_roboto_client(roboto_client, org_id=None)#
- Parameters:
roboto_client (roboto.http.RobotoClient)
org_id (Optional[str])
- Return type:
- classmethod from_env()#
Create a RobotoSearch instance configured from environment variables.
Reads authentication credentials and endpoint configuration from environment variables ($ROBOTO_API_KEY/$ROBOTO_BEARER_TOKEN, $ROBOTO_SERVICE_ENDPOINT) or the config file at $ROBOTO_CONFIG_FILE (default: ~/.roboto/config.json). If using the config file, $ROBOTO_PROFILE can be used to select a profile from the config.
$ROBOTO_ORG_ID can be used to set the organization ID to query. This should only be necessary if you belong to multiple organizations.
- Returns:
A configured RobotoSearch instance ready to query the Roboto platform.
- Return type:
Examples
>>> import roboto >>> roboto_search = roboto.RobotoSearch.from_env() >>> for dataset in roboto_search.find_datasets(): ... print(dataset.name)