For consistency I would like the results of Select and similar operation on Datasets to always return a Dataset object. If you query a Dataset and the result is a single column or a single value a List is returned.
data = {{"ID", "Variable1", "Variable2"}, {"Alpha", 1, 0}, {"Beta", 1,1}, {"Alpha", 1, 0}};
assoc = AssociationThread[First@data -> #] & /@ Rest@data;
ds = Dataset[assoc];
This returns a Dataset
ds[Select[#"ID" == "Alpha" &], {"ID", "Variable1"}]
This returns a List
ds[Select[#"ID" == "Alpha" &], "ID"]
(* Result {Alpha,Alpha} *)
This returns a list
ds[Select[#"ID" == "Beta" &], "ID"]
(* Result {Beta} *)