I have 3 Views, ViewA, ViewB & ViewC. View A has direct relations to ViewB & ViewC via properties DefectEventID & AssetId, respectively.
Pagination is expected and with Instance.Query end point, looping via cursors, it is not giving results for ViewB & ViewC, apart from the first 100 records from the first call of instances.query(query).
What is the best way to populate all_ViewA_Nodes,all_ViewB_Nodes ,all_ViewC_Nodes Pagination via multiple cursors from Instance.Query?
query = dm.query.Query(
with_={
"ViewA_Nodes": dm.query.NodeResultSetExpression(
filter=filters.HasData(views=[ViewA]),
limit=100,
),
"ViewB_Nodes": dm.query.NodeResultSetExpression(
from_="ViewA_Nodes",
through=dm.PropertyId(
source=ViewA,
property="DefectEventID"
),
direction="outwards",
filter=filters.HasData(views=[ViewB]),
limit=100,
),
"ViewC_Nodes": dm.query.NodeResultSetExpression(
from_="ViewA_Nodes",
through=dm.PropertyId(
source=ViewA,
property="AssetId"
),
direction="outwards",
filter=filters.HasData(views=[ViewC]),
limit=100,
),
},
select={
"ViewA_Nodes": dm.query.Select(
sources=[
dm.query.SourceSelector(
source=ViewA,
properties=["*"],
)
]
),
"ViewB_Nodes": dm.query.Select(
sources=[
dm.query.SourceSelector(
source=ViewB,
properties=["startTime", "name", "description", "SapFunctionalLocationDescription","duration"],
)
]
),
"ViewC_Nodes": dm.query.Select(
sources=[
dm.query.SourceSelector(
source=ViewC,
properties=["description"],
)
]
),
},
)
# Paginate through all results
all_ViewA_Nodes = []
all_ViewB_Nodes = []
all_ViewC_Nodes = []
result = client.data_modeling.instances.query(query)
all_ViewA_Nodes.extend(result["ViewA_Nodes"])
all_ViewB_Nodes.extend(result["ViewB_Nodes"])
all_ViewC_Nodes.extend(result["ViewC_Nodes"])
# Iterate through cursors
while result.cursors and any(v is not None for v in result.cursors.values()):
query = dm.query.Query(
with_=query.with_,
select=query.select,
cursors=result.cursors,
)
result = client.data_modeling.instances.query(query)
all_ViewA_Nodes.extend(result["ViewA_Nodes"])
all_ViewB_Nodes.extend(result["ViewB_Nodes"])
all_ViewC_Nodes.extend(result["ViewC_Nodes"])
Check the
documentation
Ask the
Community
Take a look
at
Academy
Cognite
Status
Page
Contact
Cognite Support