It doesn't seem to drop the null values, see the brief flow below;
[{"id":"532e211d.7cdb9","type":"function","z":"c53060.842a0fa","name":"test data","func":"msg.payload = {\n CG_apptemp: 28,\n CG_cloud: 0,\n SC_apptemp: null,\n SC_cloud: null\n};\n\nreturn msg;\n","outputs":1,"noerr":0,"x":410,"y":1120,"wires":[["4a8794d2.3c8aec"]]},{"id":"7eb46d1.98d7494","type":"debug","z":"c53060.842a0fa","name":"","active":true,"console":"false","complete":"false","x":740,"y":1120,"wires":[]},{"id":"4a8794d2.3c8aec","type":"change","z":"c53060.842a0fa","name":"merge data","rules":[{"t":"set","p":"payload","pt":"msg","to":"[\t\t$merge(payload),\t\t{\t \t\"metrics\": \"weather\"\t\t}\t]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":1120,"wires":[["7eb46d1.98d7494"]]},{"id":"13605a8b.89aab5","type":"inject","z":"c53060.842a0fa","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":"","x":260,"y":1120,"wires":[["532e211d.7cdb9"]]}]
Also, as the join node creates a key/value object;
it does not get processed by the JSONata merge.
The complete flow with the JSONata merge node added is;
[{"id":"c5ba0375.379","type":"darksky","z":"c53060.842a0fa","darksky":"","name":"Cala Galdana","lon":"3.960460","lat":"39.938713","date":"","time":"","mode":"node","lang":"en","units":"uk2","x":308,"y":840,"wires":[["d1c36626.4042e8"]]},{"id":"73043ed0.c3f35","type":"inject","z":"c53060.842a0fa","name":"2pm every day","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"0 0-23 * * *","once":false,"onceDelay":"","x":120,"y":840,"wires":[["c5ba0375.379","80b98bb1.b56a28"]]},{"id":"e2505289.f076a","type":"darksky","z":"c53060.842a0fa","darksky":"","name":"Sa Coma","lon":"3.376063","lat":"39.579944","date":"","time":"","mode":"node","lang":"en","units":"uk2","x":330,"y":890,"wires":[["13cf9dfe.00fb62"]]},{"id":"a69c3819.a82f28","type":"join","z":"c53060.842a0fa","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"60","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":588,"y":840,"wires":[["a24646b6.b7a5c8","4b53014d.4a7c6"]]},{"id":"d1c36626.4042e8","type":"function","z":"c53060.842a0fa","name":"Parser","func":"msg.topic = \"calagaldana\";\nconst i = msg.data.currently;\n const at = i.apparentTemperature;\n const cl = i.cloudCover*100;\n\nmsg.payload = {\n CG_apptemp: at,\n CG_cloud: cl\n};\nreturn msg;\n","outputs":1,"noerr":0,"x":458,"y":840,"wires":[["a69c3819.a82f28"]]},{"id":"13cf9dfe.00fb62","type":"function","z":"c53060.842a0fa","name":"Parser","func":"msg.topic =\"sacoma\";\nconst i = msg.data.currently;\n const at = i.apparentTemperature;\n const cl = i.cloudCover*100;\n\nmsg.payload = {\n SC_apptemp: at,\n SC_cloud: cl\n};\nreturn msg;\n","outputs":1,"noerr":0,"x":460,"y":890,"wires":[["a69c3819.a82f28"]]},{"id":"80b98bb1.b56a28","type":"delay","z":"c53060.842a0fa","name":"","pauseType":"delay","timeout":"15","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":182,"y":890,"wires":[["e2505289.f076a"]]},{"id":"66dfa018.9ce1","type":"debug","z":"c53060.842a0fa","name":"","active":true,"console":"false","complete":"false","x":900,"y":840,"wires":[]},{"id":"a24646b6.b7a5c8","type":"change","z":"c53060.842a0fa","name":"merge data","rules":[{"t":"set","p":"payload","pt":"msg","to":"[\t\t$merge(payload),\t\t{\t \t\"metrics\": \"weather\"\t\t}\t]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":740,"y":840,"wires":[["66dfa018.9ce1"]]},{"id":"4b53014d.4a7c6","type":"debug","z":"c53060.842a0fa","name":"","active":true,"console":"false","complete":"false","x":740,"y":890,"wires":[]}]