在 Netezza 中查看 QRYSTAT 的来源 table
Source table for view QRYSTAT in Netezza
我目前在 Aginity Workbench 的 Netezza 环境中工作,我正计划使用管理视图 _V_QRYSTAT 中的一些列来填充 MicroStrategy 中的图表。
不幸的是,我无法让 MicroStrategy 识别 _V_QRYSTAT 中的任何列。我不认为它可以从视图中读取列,我认为解决这个问题的最佳方法是找出 table _V_QRYSTAT 视图从哪个 table 获取数据,但我可以'想不出一种方法来查找 Netezza 中视图的来源 table。有谁知道可以在 Netezza on Aginity Workbench 中用于定位视图源 table 的方法(特别是 _V_QRYSTAT)?
我是 SQL、Netezza 和 MicroStrategy 的新手,所以如果我不清楚,我深表歉意。如果需要进一步说明,请告诉我。
我很确定 MicroStrategy 会识别并使用视图,但要直接回答您的问题,您可以通过查询 _V_VIEW 系统视图来查看视图定义。
select definition from _v_view where viewname = '_V_QRYSTAT';
DEFINITION
---------
SELECT
QS.QS_SESSIONID,
QS.QS_PLANID ,
QS.QS_CLIENTID ,
CASE
WHEN ((VU.OBJID NOTNULL
)
OR ("CURRENT_USEROID"() = 4900
)
)
THEN QS.QS_CLIIPADDR
ELSE "NAME"(NULL::"VARCHAR")
END AS QS_CLIIPADDR,
CASE
WHEN ((VU.OBJID NOTNULL
)
OR ("CURRENT_USEROID"() = 4900
)
)
THEN QS.QS_SQL
ELSE TEXT(NULL::"VARCHAR")
END AS QS_SQL ,
QS.QS_STATE ,
QS.QS_TSUBMIT ,
QS.QS_TSTART ,
QS.QS_PRIORITY,
QS.QS_PRITXT ,
QS.QS_ESTCOST ,
QS.QS_ESTDISK ,
QS.QS_ESTMEM ,
QS.QS_SNIPPETS,
QS.QS_CURSNIPT,
QS.QS_RESROWS ,
QS.QS_RESBYTES
FROM
((DEFINITION_SCHEMA."_T_QRYSTAT" QS
LEFT JOIN DEFINITION_SCHEMA."_T_SESSCTX" SS ON (
(QS.QS_SESSIONID = SS.SESSION_ID
)
))
LEFT JOIN DEFINITION_SCHEMA."_V_USER" VU ON (
(SS.SESSION_USERNAME = VU.USERNAME
)
));
(1 row)
这几乎肯定会让您减少一些递归,因为您感兴趣的视图既基于视图又基于表。
我目前在 Aginity Workbench 的 Netezza 环境中工作,我正计划使用管理视图 _V_QRYSTAT 中的一些列来填充 MicroStrategy 中的图表。
不幸的是,我无法让 MicroStrategy 识别 _V_QRYSTAT 中的任何列。我不认为它可以从视图中读取列,我认为解决这个问题的最佳方法是找出 table _V_QRYSTAT 视图从哪个 table 获取数据,但我可以'想不出一种方法来查找 Netezza 中视图的来源 table。有谁知道可以在 Netezza on Aginity Workbench 中用于定位视图源 table 的方法(特别是 _V_QRYSTAT)?
我是 SQL、Netezza 和 MicroStrategy 的新手,所以如果我不清楚,我深表歉意。如果需要进一步说明,请告诉我。
我很确定 MicroStrategy 会识别并使用视图,但要直接回答您的问题,您可以通过查询 _V_VIEW 系统视图来查看视图定义。
select definition from _v_view where viewname = '_V_QRYSTAT';
DEFINITION
---------
SELECT
QS.QS_SESSIONID,
QS.QS_PLANID ,
QS.QS_CLIENTID ,
CASE
WHEN ((VU.OBJID NOTNULL
)
OR ("CURRENT_USEROID"() = 4900
)
)
THEN QS.QS_CLIIPADDR
ELSE "NAME"(NULL::"VARCHAR")
END AS QS_CLIIPADDR,
CASE
WHEN ((VU.OBJID NOTNULL
)
OR ("CURRENT_USEROID"() = 4900
)
)
THEN QS.QS_SQL
ELSE TEXT(NULL::"VARCHAR")
END AS QS_SQL ,
QS.QS_STATE ,
QS.QS_TSUBMIT ,
QS.QS_TSTART ,
QS.QS_PRIORITY,
QS.QS_PRITXT ,
QS.QS_ESTCOST ,
QS.QS_ESTDISK ,
QS.QS_ESTMEM ,
QS.QS_SNIPPETS,
QS.QS_CURSNIPT,
QS.QS_RESROWS ,
QS.QS_RESBYTES
FROM
((DEFINITION_SCHEMA."_T_QRYSTAT" QS
LEFT JOIN DEFINITION_SCHEMA."_T_SESSCTX" SS ON (
(QS.QS_SESSIONID = SS.SESSION_ID
)
))
LEFT JOIN DEFINITION_SCHEMA."_V_USER" VU ON (
(SS.SESSION_USERNAME = VU.USERNAME
)
));
(1 row)
这几乎肯定会让您减少一些递归,因为您感兴趣的视图既基于视图又基于表。