Daniil Medvedev's impressive form on clay continued as he beat Kei Nishikori to reach the final of the Barcelona Open.