A unified data governance solution that helps manage, protect, and discover data across your organization
- For Submit Scenario
Here is the sample data structure, we are using custom entity, please see response_1781823816744.txt
and for QualifiedName field we use in this formart : pds://bench-rel-20260618050106/sub/0008ba92-f566-482b-8ea6-95b06465a802/appinsights/res-appinsights-0008ba92-0014
From the test result I found that :
we put 200 entities for a batch to submit , because when we add more than this it will occur an error like the URL is too long or some like that error info.
If the request can success, the avg cost time will be around 4000 ms. (without any relationship, just the independent entities)
So, my question is there any other way I can submit more for one time. Or is there any optimization I can do to accelerate the submit process.
We're using DataMapClient.GetEntityClient().BatchCreateOrUpdateAsync to batch Submit
- For Catalog search
Here is the way we use catalog to search our target entities, I found that even I remove all the relationship the query perf is not so satisficed.
Can you help me to check if is the right way to use the catalog search ?
`var prodSubResults = await _catalogService.SearchEntityByServiceIdAndAttributesAsync(`
new Dictionary<string, string>
{
{ "ServiceId", serviceId },
{ "Environment", "Prod" }
},
CustomEntityConstants.SUBSCRIPTION_CUSTOM_ENTITY_NAME,
FilterOperator.Eq);
public async Task<IEnumerable<SearchResultValue>> SearchEntityByServiceIdAndAttributesAsync(IReadOnlyDictionary<string, string> attrDic, string typeName, FilterOperator Oper)
{
var filters = new List<object>
{
new { typeName = typeName }
};
foreach (var kvp in attrDic)
{
filters.Add(new
{
attributeName = kvp.Key,
@operator = Oper.GetEnumMemberValue(),
attributeValue = kvp.Value
});
}
var resList = new List<SearchResultValue>();
string? continuationToken = null;
var config = new QueryConfig
{
Limit = 1000,
Filter = BinaryData.FromObjectAsJson(new
{
and = filters
}),
};
do
{
var response = await purviewClient.DataMapClient.GetDiscoveryClient().QueryAsync(config);
resList.AddRange(response.Value.Value ?? Enumerable.Empty<SearchResultValue>());
continuationToken = response.Value.ContinuationToken;
config.ContinuationToken = continuationToken;
} while (!string.IsNullOrEmpty(continuationToken));
return resList;
}