Elena Rybakina ended defending champion Iga Swiatek's 10-match winning streak in Stuttgart on Saturday to reach the final of the clay-court tournament.