How to derive/interpolate a polynomial f(x,y) from several discrete polynomials f(x)?

Update: This replaces a generic interpolation of the f's -- see edit history.

data = {{1000000, 1000000, 0.10545}, {1000000, 999000, 
    0.18}, {1000000, 997000, 0.29}, {1000000, 995000, 0.58}, {1000000,
     992000, 0.83}, {1000000, 991000, 0.93}, {1000000, 990100, 
    1}, {1000000, 990000, 7.5}, {1000000, 900000, 12.56}, {1000000, 
    800000, 26}, {1000000, 700000, 35}, {1000000, 600000, 
    36}, {1000000, 500000, 32.8}, {1000000, 400000, 30}, {1000000, 
    200000, 15.55}, {1000000, 100000, 6.79}, {1000000, 50000, 
    3.75}, {500000, 500000, 0.319}, {500000, 100000, 6.45}, {500000, 
    50000, 3.06}, {100000, 100000, 0.049}, {100000, 50000, 
    2.72}, {100000, 10000, 0.644}, {50000, 50000, 0.04}, {50000, 
    10000, 0.548}, {50000, 5000, 0.48}, {10000, 10000, 
    0.0423}, {10000, 5000, 0.226}, {10000, 1000, 0.262}, {1000, 1000, 
    0.04}, {1000, 500, 0.072}, {100, 100, 0.0725}, {100, 50, 0.12}};
ff = Fit[data, {1, x, y, x^2, x y, y^2, x^3, x^2 y, x y^2, y^3}, {y, x}]
(*
0.0360751 - 9.24559*10^-6 x - 2.92375*10^-10 x^2 - 
 1.00408*10^-16 x^3 + 0.0000149795 y + 3.34707*10^-10 x y + 
 3.04925*10^-16 x^2 y - 5.74977*10^-11 y^2 - 2.35943*10^-16 x y^2 + 
 4.09308*10^-17 y^3
*)

Show[
 Plot3D[ff,
  {x, -1 - Min@data[[All, 2]], 1 + Max@data[[All, 2]]},
  {y, -1 - Min@data[[All, 1]], 1 + Max@data[[All, 1]]},
  Mesh -> {0, Union@data[[All, 1]]}, MeshStyle -> Thick],
 Graphics3D[{Red, PointSize[Medium], Point[data[[All, {2, 1, 3}]]]}],
 PlotRange -> MinMax@data[[All, 3]]
 ]

enter image description here

The black mesh lines represent the OP's functions f1 etc., but since the lines are the result of a multivariate fitting, they will differ somewhat from them.