query¶
- Dimension.query(expression, fields=None, as_model=True, role=None, role_name=None, role_group=None, multi_entity_config=None)¶
查询成员
根据维度表达式查询维度成员
- 参数
重要
expression
可以不包含维度名,即: 如果当前维度是Entity,Entity{Base(#root,0)}
和Base(#root,0)
是等价的。为保证接口正常调用,
fields
将自动包含name
属性。as_model
参数可以影响本方法的返回类型,可以根据使用需要指定。
示例
如果希望将查询出的成员作为对象操作,推荐使用默认参数查询:
dim = Dimension('dim_example') mbrs = dim.query('Base(#root,0)', fields=['ud1']) mbr = mbrs[0] ud1 = mbr.ud1 name = mbr.name ...
注意:未查询的属性也能访问,但值固定是None
assert mbrs.ud2 is None
可以把上述查询结果转换为dataframe:
data = (mbr.dict(exclude_unset=True) for mbr in mbrs) df = pd.DataFrame(data=data)
注意需要参数
exclude_unset=True
排除未查询到的数据。如果希望把查询数据转换为dataframe,更推荐使用以下方式:
dim = Dimension('dim_example') mbrs = dim.query('Base(#root,0)', fields=['ud1'], as_model=False) # 注意此时返回的数据类型不同 assert isinstance(mbrs, List[dict]) df = pd.DataFrame(data=mbrs)
如果希望带权限方案查询,可用
role
、role_name
以及role_group
参数表示权限方案信息dim = Dimension('component') mbrs = dim.query('Descendant(East,0)', role='test_role', role_name='nonsense')
此时会以权限方案test_role中的nonsense角色作为查询的角色信息,查询维度表达式:component{Descendant(East,0)}
注意:role_name和role_group若提供,则提供其一即可
- 返回类型
Union
[List
[DimensionMemberBean
],List
[Dict
[str
,Any
]],List
[MultiEntityConfigResult
]]- 返回
如果
as_model == True
, 返回List[DimensionMemberBean]
类型, 不在查询fields中的属性将会被设置为None。如果
as_model == False
,返回List[Dict[str, Any]]
类型, 内部的字典将不包含未查询的属性