Once you verified it had to be changed and indicated links table is no longer there, think I got it updated to work now:
have to actually remove the 2 lines starting with //, but basically changed links to neighbours and updated l.local_port_id to l.port_id below. Running this with 1100+ devices in observium kicks out a really large map, but got to say great product!
SELECT
UPPER(d.hostname) AS local_hostname,
p.port_id AS local_port_id,
p.ifName AS local_port,
p.ifSpeed/1000000 as local_port_speed,
l.remote_port_id AS remote_port_id,
rp.ifName AS remote_port,
UPPER(l.remote_hostname) AS remote_hostname,
d.hardware AS hardware,
rd.hardware AS remote_hardware,
s.ifInErrors_rate AS local_in_errors_rate,
s.ifOutErrors_rate AS local_out_errors_rate,
s.ifInOctets_rate*8 AS local_in_octets_rate,
s.ifOutOctets_rate*8 AS local_out_octets_rate,
s.ifInOctets_perc AS local_in_octets_perc,
s.ifOutOctets_perc AS local_out_octets_perc
FROM
`devices` AS d,
`devices` as rd,
`ports` AS p,
`ports` as rp,
// `links` AS l,
`neighbours` AS l,
`ports-state` AS s
WHERE
// p.port_id = l.local_port_id AND
p.port_id = l.port_id AND
p.device_id = d.device_id AND
rp.port_id = l.remote_port_id AND
rp.device_id = rd.device_id AND
p.port_id = s.port_id AND
UPPER(d.hostname) = UPPER(%s);
"""