Jan 21 2021 03:06 AM
I'm using the Azure Pricing API on a project and trying to apply a negative filter. According to the documentation I think I should be able to do a filter like
$filter=not endswith(skuName,'Spot')
to remove Spot Instances from a VM list, but this returns the error
{"Error":{"Code":"BadRequest","Message":"Invalid OData parameters supplied"}}
For example, the following URL (without the "not") works
https://prices.azure.com/api/retail/prices?$filter=endswith(skuName,%27Spot%27)
but with the "not" it fails
https://prices.azure.com/api/retail/prices?$filter=not%20endswith(skuName,%27Spot%27)
I've tried a number of different combinations of syntax, but this matches the documentation I could find. I've also tried negative filtering on other criteria (for example, list me all the VM offerings that are not from UK South) but they fail as well.
Any suggestions on how to do this gratefully received. My workaround is to process the list locally, but obviously that's pulling a lot more data than I need, and adding extra processing at my end.
Jan 24 2021 12:04 AM
I don't think you can combine not and endswith.
Try ne instead.
Something like this ?filter=SkuName ne 'Spot' or ?filter=Location ne 'UK-South'
Use query parameters to customize responses - Microsoft Graph | Microsoft Docs
Jan 24 2021 08:33 AM
@Jan Bakker Unfortunately, the VM Instance size isn't called "Spot", it's called something like "D2s Spot"- so the ne test doesn't pick that up as it's doing an exact match.
Jan 20 2022 09:36 PM
I am taking the storage data from the pricing api , but i need to exclude the "Azure Netapp files" from my query , please help.
Thanks in advance.
Regards Vincent S
Jan 21 2022 01:34 AM
@vincentss A different problem here, but can that just be accomplished by adding
$filter=productName ne 'Azure NetApp Files'
to your query? For example
https://prices.azure.com/api/retail/prices?$filter=productName%20ne%20%27Azure%20NetApp%20Files%27