Bring 1 inch of water to a simmer in a large pot fitted with a steamer basket. Add sweet potatoes, cover and steam for 20 to 25 minutes until very tender, checking that the pot does not boil dry.
Heat the oven to 350°F and grease a 2-quart baking dish. Mash the potatoes with filling butter, buttermilk, filling sugar, vanilla and 1/2 teaspoon salt; let cool until warm, then mix in the egg.
Combine pecans, flour, topping sugar and remaining salt in a bowl. Rub in the cold topping butter until coarse clumps form.
Spread the filling in the baking dish and scatter the streusel evenly over it without pressing it into a solid layer.
Bake for 30 to 35 minutes until the topping is browned and the center reaches 160°F. Let stand for 10 minutes before serving.