Contagem de visualizações de página para usuários (não-staff, não-crawler)

A consulta parece que deveria funcionar.

Sim, conforme está escrita, ela está contando visualizações anônimas. Para visualizações anônimas de tópicos, o user_id será NULL e o ip_address será NOT NULL. Você pode excluir visualizações anônimas adicionando a seguinte condição à consulta:

AND user_id IS NOT NULL

Isso pode ser feito por meio de um plugin. O plugin Discourse Solved adiciona um relatório ao painel de administração. Pode haver algum código nesse plugin que seja útil como exemplo de como adicionar um relatório: discourse-solved/plugin.rb at main · discourse/discourse-solved · GitHub.