更新时间:2026-01-06 GMT+08:00
分享

查询请求结果

  • 功能介绍:用户可以使用QueryResponse查询本次请求的整体执行结果。
  • 方法定义:getSummary(workspaceId, response, get_schema, timeout)
  • 参数说明:
    表1 getSummary参数说明

    参数名称

    参数类型

    是否必选

    描述

    workspaceId

    str

    必选

    用户创建的Fabric的工作空间的ID。

    response

    QueryResponse

    必选

    本次查询请求返回的响应体。

    get_schema

    bool

    可选

    指定本次查询的结果中是否包含被查询表的schema信息,默认值为True。

    timeout

    float

    可选

    请求超时时间。

  • 响应体说明:返回StatementSet

    该函数会返回一个响应体结构StatementSet,该结构的statements字段为一个list,如果本次查询请求仍在执行,状态为RUNNING、WAITING时,statements的是一个空list;否则statements中会包含每一个语句对应的Statement结构体,如本次请求的SQL语句为select * from a; select * from b; select * from c,如果均执行成功,则返回一个有3个Statement结构体的list,每一个Statement结构体代表一个单SQL语句的执行结果。如果请求的多个SQL中某一个SQL语句执行失败,则list中只会包含从第一个语句开始到该失败语句的Statement结构体,因为一旦中间有一个语句失败,后续语句不会被执行。

    表2 StatementSet

    参数名称

    参数类型

    描述

    statements

    list[Statement]

    本次查询执行完毕的语句结果。

    status

    str

    本次查询整体的执行状态。

    表3 Statement

    参数名称

    参数类型

    描述

    status

    str

    该条语句的执行状态。

    session_id

    str

    会话ID。

    statement_id

    str

    语句ID。

    num_rows

    int

    语句影响总行数。

    page_count

    int

    该语句结果集总页数。

    err_code

    str

    错误码。

    message

    str

    执行信息,如果执行失败为失败信息。

    schema

    list[Column]

    该语句被查询表的schema信息。

    obs_endpoint

    str

    结果集文件写入OBS桶的端点信息。

    obs_bucket_name

    str

    结果集文件写入的OBS桶名。

    obs_file_path_prefix

    str

    结果集文件路径前缀。

    obs_schema_path

    str

    表schema信息文件的OBS路径。

    obs_result_format

    ObsFileFormat

    结果集文件在OBS存储的格式。

    表4 Column

    参数名称

    参数类型

    描述

    name

    str

    列头名称。

    table_id

    str

    表的ID。

    colunm_id

    str

    列的ID。

    format

    int

    格式。

    type

    int

    类型。

    size

    int

    大小。

    typemod

    int

    typemod。

    表5 ObsFileFormat

    取值

    含义

    0

    结果集文件格式为未压缩的JSON文件。

    1

    结果集文件格式为zstd算法压缩后的JSON文件。

    2

    结果集文件格式为未压缩的Arrow文件。

    3

    结果集文件格式为zstd压缩后的Arrow文件。

    • 如果该请求执行失败或者查询本身不包含结果集,Statement中的schema和obs开头字段均为None。
    • 如果get_schema设置为False,Statement的schema为None。
    表6 StatementSet的status取值

    状态值

    描述

    FAIL

    执行失败。

    SUCCESSFUL

    执行成功。

    RUNNING

    执行中。

    EMPTY

    结果集为空。

    WAITING

    等待中。

    表7 Statement的status取值

    状态值

    描述

    PGRES_TUPLES_OK

    本次执行成功返回元组。

    PGRES_COMMAND_OK

    本次执行成功,不返回元组,如SET语句。

    PGRES_FATAL_ERROR

    本次执行失败。

  • 示例代码:

import os
from fabricsql.SQLClient import FabricSQLClient
from fabricsql.SQLRequests import SessionRequest, QueryRequest
client = FabricSQLClient(ep, ak ,sk )
# 创建一个Session请求,填入必要信息
s = SessionRequest()
s.endpoint_id = endpoint_id
s.instance_id = instance_id
s.catalog = catalog
#创建一个Session,获取session_id
session = client.createSession(workspace_id, s)
session_id = session.session_id
# #创建一个SQL请求
q = QueryRequest()
q.statement = "show all;select * from a;select * from b"
q.session_id = session_id
#下发请求,返回一个请求响应
query_resp = client.executeQuery(workspace_id, q)
#根据该请求响应,轮询请求结果
while True:
    statement_set = client.getSummary(wp, query_resp, get_schema=False)
    if statement_set.status == "SUCCESSFUL" or statement_set.status == "FAIL":
        break
    #等待2s后轮询
    time.sleep(2)

相关文档