As respostas acima estão corretas, mas algumas coleções apenas montam o select no método _beforeLoad(), ao invés de inicializá-lo no construtor. Isso significa que você obterá uma string vazia se tentar gerar a consulta SQL antes de carregar a coleção.
Um exemplo disso é \Magento\Sales\Model\ResourceModel\Report\Bestsellers\Collection. Portanto, se você estiver obtendo resultados inesperados, carregue a coleção (isso criará a consulta de seleção final) e, em seguida, gere a consulta.
$collection->load();
// the following statements are equivalent
$collection->getSelect()->assemble();
$collection->getSelect()->__toString();
echo $collection->getSelect(); // will call magic method __toString() behind the scenes which in turn calls assemble()
Utilize a função __toString():
echo $collection->getSelect()->__toString();