Using . within field names of ak.Records is a valid thing to do. . is also commonly used in parquet's schemas or ROOT TBranch names, which are translated directly into field names of RecordArrays.
Currently, dask-awkward reports the same necessary columns for the following two cases:
# nested record
ak_array = ak.zip({"pt": ak.zip({"foo": [10, 20, 30, 40]})})
dak_array = dak.from_awkward(ak_array, 1)
dak.necessary_columns(dak_array.pt.foo)
# >> {'from-awkward-9982974575212ac0cbf053decf1d9e0e': frozenset({'pt.foo'})}
# field name with "."
ak_array = ak.zip({"pt.foo": [10, 20, 30, 40]})
dak_array = dak.from_awkward(ak_array, 1)
dak.necessary_columns(dak_array["pt.foo"])
# >> {'from-awkward-6750f2c89e6822a055048307a7430a02': frozenset({'pt.foo'})}
Maybe alternatively the frozenset should contain ("pt", "foo") in the first case ("nested record") and ("pt.foo",) in the second case ("field name with ."), so these cases are ambiguous?