Just came across this issue as I was tracking down what costs the most in the subscription.
One useful tool is the Azure Storage Explorer. You can browse to a table, inspect its contents, use the Table Statistics button to count table rows, multi-select and delete rows.
For one small VM that's been running since 2016, I found that the WADMetrics tables seem to roll every 10 days, but the others do not. A sample WADMetrics table contained 5724 entries. The WASWindowsEventLogsTable contained 10,022 entries. I cancelled the WADPerformanceCountersTable count when it reached 5 million entries. It costs more to store the statistics than the VM's VHD.
This article summarizes useful information about PowerShell commands for manipulating tables. Unfortunately, the Azure Cloud Shell doesn't yet support commands for working inside a table e.g. Get-AzTableRow (see this report). I assume that would work if you set up the latest Az PowerShell commands locally. Then you could select with a filter and use Remove-AzTableRow to delete some of the rows. In my case, the machine has been decommissioned so I just needed a way to delete lots of tables without having to click on each one in the dashboard. Here are some sample commands to start from:
$location = "uswest"
$resourceGroup = "myRG"
$storageAccountName = "myData"
$storageAccount = get-AzStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccountName
$ctx = $storageAccount.Context
# List all tables in storage account
Get-AzStorageTable -Context $ctx
# Count the WADMetrics tables
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*").count
# Count the WADMetrics tables with "2018" in their name
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*").count
# Remove all WADMetrics tables with "2018" in their name without confirmation, then re-count
# Only Get- supports wilcards, so pipe to Remove-AzStorageTable command
Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*" | Remove-AzStorageTable -Force
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*").count
# Remove the big tables. Confirmation takes a long time, so suppress it.
Remove-AzStorageTable -Context $ctx -Name "WADWindowsEventLogsTable" -Force
Remove-AzStorageTable -Context $ctx -Name "WADPerformanceCountersTable" -Force
# The following do NOT work in Azure Cloud Shell as of 07/16/2019. See
# https://github.com/MicrosoftDocs/azure-docs/issues/28608
# Count the rows in WADWindowsEventLogsTable
$tableName = "WADWindowsEventLogsTable"
$cloudTable = (Get-AzStorageTable -Context $ctx -Name $tableName).CloudTable
$cloudTableResults = Get-AzTableRow -table $cloudTable -columnName "RowKey"
$cloudTableResults.count