Using piezo as knock sensor with medium length cable produces noise on the input

I think you've simply created a magnetic loop aerial!

The two wires to the piezo sensor should be twisted tightly together, or alternatively use a shielded cable. Any large loop of wire will pick up magnetic and radio interference.

Also you might find noise can be reduced by adding a little capacitance across the wires at the Arduino end (around 100pF) - this will short out radio-frequencies without affecting the frequencies you are interested in.