Le espressioni dopo select deve valutare un unico valore. Da jsonb_to_recordset restituisce un insieme di righe e colonne, non puoi utilizzarlo lì.
La soluzione è un cross join lateral , che consente di espandere una riga in più righe utilizzando una funzione. Questo ti dà righe singole che select può agire. Ad esempio:
select *
from journal j
cross join lateral
jsonb_to_recordset(j.data#>'{context, data, files}') as d(id int, name text)
where j.id = 'ap32bbofopvo7pjgo07g'
Tieni presente che #>> operatore
restituisce il tipo text e il #> l'operatore restituisce il tipo jsonb . Come jsonb_to_recordset si aspetta jsonb come primo parametro sto usando #> .
Guarda che funziona su rextester.com