Loading...

verticapy.performance.vertica.qprof.QueryProfiler.import_profile

static QueryProfiler.import_profile(target_schema: str, key_id: str, filename: PathLike, tmp_dir: PathLike = '/tmp', auto_initialize: bool = True)

The static method import_profile can be used to create new QueryProfiler object from the contents of a export bundle.

Export bundles can be produced by the method export_profile. The bundles contain system table data written into parquet files.

The method import_profile executes the following steps:
  • Unpacks the profie bundle

  • Creates tables in the in the target schema if they do not exist. The tables will be suffixed by key_id.

  • Copies the data from the parquet files into the tables

  • Creates a QueryProfiler object initialized to use data from the newly created and loaded tables.

The method returns the new QueryProfiler object.

Parameters

target_schema: str

The name of the schema to load data into

key_id: str

The suffix for table names in the target_schema

filename: os.PathLike

The file containing exported profile data

tmp_dir: os.PathLike

The directory to use for temporary storage of unpacked files.

Returns

A QueryProfiler object

Examples

First, let’s import the QueryProfiler object.

from verticapy.performance.vertica import QueryProfiler
from verticapy.performance.vertica.collection.profile_export import ProfileExport

Now we can profile a query and create a set of system table replicas by calling the QueryProfiler constructor:

qprof = QueryProfiler(
    "select transaction_id, statement_id, request, request_duration"
    " from query_requests where start_timestamp > now() - interval'1 hour'"
    " order by request_duration desc limit 10;",
    target_schema="replica_001",
    key_id="example123"
)

We can use export_profile to produce an export bundle. We choose to name our export bundle "query_requests_example_001.tar".

qprof.export_profile(filename="query_requests_example_001.tar")

After producing an export bundle, we can import it into a different schema using import_profile. For purposes of this example, we’ll import the data into another schema in the same database. We expect it is more common to import the bundle into another database.

Let’s use the import schema name import_002, which is distinct from the source schema replica_001.

qprof_imported = QueryProfiler.import_profile(
    target_schema="import_002",
    key_id="ex9876",
    filename="query_requests_example_001.tar"
)

Now we use the QueryProfiler to analyze the imported information. All QueryProfiler methods are available. We’ll use get_qduration() as an example.

print(f"First query duration was {qprof_imported.get_qduration()} seconds")

Let’s assume the query had a duration of 3.14 seconds. The output will be:

First query duration was 3.14 seconds