== Physical Plan == CollectLimit (16) +- InMemoryTableScan (1) +- InMemoryRelation (2) +- * Project (15) +- * BroadcastHashJoin Inner BuildRight (14) :- * Filter (7) : +- InMemoryTableScan (3) : +- InMemoryRelation (4) : +- * Project (6) : +- Scan csv (5) +- BroadcastExchange (13) +- * Filter (12) +- InMemoryTableScan (8) +- InMemoryRelation (9) +- * Project (11) +- Scan csv (10) (1) InMemoryTableScan Output [11]: [Category#93875767, Label#93875768, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826] Arguments: [Category#93875767, Label#93875768, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826] (2) InMemoryRelation Arguments: [Category#93875767, Label#93875768, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@208e3fd9,StorageLevel(disk, memory, deserialized, 1 replicas),*(2) Project [Category#93875767, Label#93875768, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826] +- *(2) BroadcastHashJoin [group#94120786], [group#93875766], Inner, BuildRight, false :- *(2) Filter isnotnull(group#94120786) : +- InMemoryTableScan [group#94120786, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826], [isnotnull(group#94120786)] : +- InMemoryRelation [group#94120786, annual_bmret#94120787, annual_ret#94120788, std_ret#94120811, Sharpe_ret#94120812, PctPos_ret#94120813, TR_ret#94120814, IR_ret#94120815, annual_resret#94120816, std_resret#94120817, Sharpe_resret#94120818, PctPos_resret#94120819, TR_resret#94120820, IR_resret#94120821, annual_retnet#94120823, std_retnet#94120824, Sharpe_retnet#94120825, PctPos_retnet#94120826, TR_retnet#94120882, IR_retnet#94121009, retIC#94121011, resretIC#94121012, turnover#94121014], StorageLevel(disk, memory, deserialized, 1 replicas) : +- *(1) Project [CASE WHEN (group#94120694 = null) THEN null ELSE group#94120694 END AS group#94120786, CASE WHEN ((annual_bmret#94120695 = NA) OR (annual_bmret#94120695 = null)) THEN null ELSE cast(annual_bmret#94120695 as float) END AS annual_bmret#94120787, CASE WHEN ((annual_ret#94120696 = NA) OR (annual_ret#94120696 = null)) THEN null ELSE cast(annual_ret#94120696 as float) END AS annual_ret#94120788, CASE WHEN ((std_ret#94120697 = NA) OR (std_ret#94120697 = null)) THEN null ELSE cast(std_ret#94120697 as float) END AS std_ret#94120811, CASE WHEN ((Sharpe_ret#94120698 = NA) OR (Sharpe_ret#94120698 = null)) THEN null ELSE cast(Sharpe_ret#94120698 as float) END AS Sharpe_ret#94120812, CASE WHEN ((PctPos_ret#94120699 = NA) OR (PctPos_ret#94120699 = null)) THEN null ELSE cast(PctPos_ret#94120699 as float) END AS PctPos_ret#94120813, CASE WHEN ((TR_ret#94120700 = NA) OR (TR_ret#94120700 = null)) THEN null ELSE cast(TR_ret#94120700 as float) END AS TR_ret#94120814, CASE WHEN ((IR_ret#94120701 = NA) OR (IR_ret#94120701 = null)) THEN null ELSE cast(IR_ret#94120701 as float) END AS IR_ret#94120815, CASE WHEN ((annual_resret#94120702 = NA) OR (annual_resret#94120702 = null)) THEN null ELSE cast(annual_resret#94120702 as float) END AS annual_resret#94120816, CASE WHEN ((std_resret#94120703 = NA) OR (std_resret#94120703 = null)) THEN null ELSE cast(std_resret#94120703 as float) END AS std_resret#94120817, CASE WHEN ((Sharpe_resret#94120704 = NA) OR (Sharpe_resret#94120704 = null)) THEN null ELSE cast(Sharpe_resret#94120704 as float) END AS Sharpe_resret#94120818, CASE WHEN ((PctPos_resret#94120705 = NA) OR (PctPos_resret#94120705 = null)) THEN null ELSE cast(PctPos_resret#94120705 as float) END AS PctPos_resret#94120819, CASE WHEN ((TR_resret#94120706 = NA) OR (TR_resret#94120706 = null)) THEN null ELSE cast(TR_resret#94120706 as float) END AS TR_resret#94120820, CASE WHEN ((IR_resret#94120707 = NA) OR (IR_resret#94120707 = null)) THEN null ELSE cast(IR_resret#94120707 as float) END AS IR_resret#94120821, CASE WHEN ((annual_retnet#94120708 = NA) OR (annual_retnet#94120708 = null)) THEN null ELSE cast(annual_retnet#94120708 as float) END AS annual_retnet#94120823, CASE WHEN ((std_retnet#94120709 = NA) OR (std_retnet#94120709 = null)) THEN null ELSE cast(std_retnet#94120709 as float) END AS std_retnet#94120824, CASE WHEN ((Sharpe_retnet#94120710 = NA) OR (Sharpe_retnet#94120710 = null)) THEN null ELSE cast(Sharpe_retnet#94120710 as float) END AS Sharpe_retnet#94120825, CASE WHEN ((PctPos_retnet#94120711 = NA) OR (PctPos_retnet#94120711 = null)) THEN null ELSE cast(PctPos_retnet#94120711 as float) END AS PctPos_retnet#94120826, CASE WHEN ((TR_retnet#94120712 = NA) OR (TR_retnet#94120712 = null)) THEN null ELSE cast(TR_retnet#94120712 as float) END AS TR_retnet#94120882, CASE WHEN ((IR_retnet#94120713 = NA) OR (IR_retnet#94120713 = null)) THEN null ELSE cast(IR_retnet#94120713 as float) END AS IR_retnet#94121009, CASE WHEN ((retIC#94120714 = NA) OR (retIC#94120714 = null)) THEN null ELSE cast(retIC#94120714 as float) END AS retIC#94121011, CASE WHEN ((resretIC#94120715 = NA) OR (resretIC#94120715 = null)) THEN null ELSE cast(resretIC#94120715 as float) END AS resretIC#94121012, CASE WHEN ((turnover#94120716 = NA) OR (turnover#94120716 = null)) THEN null ELSE cast(turnover#94120716 as float) END AS turnover#94121014] : +- FileScan csv [group#94120694,annual_bmret#94120695,annual_ret#94120696,std_ret#94120697,Sharpe_ret#94120698,PctPos_ret#94120699,TR_ret#94120700,IR_ret#94120701,annual_resret#94120702,std_resret#94120703,Sharpe_resret#94120704,PctPos_resret#94120705,TR_resret#94120706,IR_resret#94120707,annual_retnet#94120708,std_retnet#94120709,Sharpe_retnet#94120710,PctPos_retnet#94120711,TR_retnet#94120712,IR_retnet#94120713,retIC#94120714,resretIC#94120715,turnover#94120716] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(1 paths)[file:/srv/plusamp/data/default/ea-market/output/transcripts/transcript..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<group:string,annual_bmret:string,annual_ret:string,std_ret:string,Sharpe_ret:string,PctPos... +- BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, false]),false), [id=#7514945] +- *(1) Filter isnotnull(group#93875766) +- InMemoryTableScan [group#93875766, Category#93875767, Label#93875768], [isnotnull(group#93875766)] +- InMemoryRelation [group#93875766, Category#93875767, Label#93875768], StorageLevel(disk, memory, deserialized, 1 replicas) +- *(1) Project [CASE WHEN (group#93875754 = null) THEN null ELSE group#93875754 END AS group#93875766, CASE WHEN (Category#93875755 = null) THEN null ELSE Category#93875755 END AS Category#93875767, CASE WHEN (Label#93875756 = null) THEN null ELSE Label#93875756 END AS Label#93875768] +- FileScan csv [group#93875754,Category#93875755,Label#93875756] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(1 paths)[file:/srv/plusamp/data/default/ea-market/common/map_stats.csv], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<group:string,Category:string,Label:string> ,None) (3) InMemoryTableScan Output [10]: [group#94120786, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826] Arguments: [group#94120786, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826], [isnotnull(group#94120786)] (4) InMemoryRelation Arguments: [group#94120786, annual_bmret#94120787, annual_ret#94120788, std_ret#94120811, Sharpe_ret#94120812, PctPos_ret#94120813, TR_ret#94120814, IR_ret#94120815, annual_resret#94120816, std_resret#94120817, Sharpe_resret#94120818, PctPos_resret#94120819, TR_resret#94120820, IR_resret#94120821, annual_retnet#94120823, std_retnet#94120824, Sharpe_retnet#94120825, PctPos_retnet#94120826, TR_retnet#94120882, IR_retnet#94121009, retIC#94121011, resretIC#94121012, turnover#94121014], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@208e3fd9,StorageLevel(disk, memory, deserialized, 1 replicas),*(1) Project [CASE WHEN (group#94120694 = null) THEN null ELSE group#94120694 END AS group#94120786, CASE WHEN ((annual_bmret#94120695 = NA) OR (annual_bmret#94120695 = null)) THEN null ELSE cast(annual_bmret#94120695 as float) END AS annual_bmret#94120787, CASE WHEN ((annual_ret#94120696 = NA) OR (annual_ret#94120696 = null)) THEN null ELSE cast(annual_ret#94120696 as float) END AS annual_ret#94120788, CASE WHEN ((std_ret#94120697 = NA) OR (std_ret#94120697 = null)) THEN null ELSE cast(std_ret#94120697 as float) END AS std_ret#94120811, CASE WHEN ((Sharpe_ret#94120698 = NA) OR (Sharpe_ret#94120698 = null)) THEN null ELSE cast(Sharpe_ret#94120698 as float) END AS Sharpe_ret#94120812, CASE WHEN ((PctPos_ret#94120699 = NA) OR (PctPos_ret#94120699 = null)) THEN null ELSE cast(PctPos_ret#94120699 as float) END AS PctPos_ret#94120813, CASE WHEN ((TR_ret#94120700 = NA) OR (TR_ret#94120700 = null)) THEN null ELSE cast(TR_ret#94120700 as float) END AS TR_ret#94120814, CASE WHEN ((IR_ret#94120701 = NA) OR (IR_ret#94120701 = null)) THEN null ELSE cast(IR_ret#94120701 as float) END AS IR_ret#94120815, CASE WHEN ((annual_resret#94120702 = NA) OR (annual_resret#94120702 = null)) THEN null ELSE cast(annual_resret#94120702 as float) END AS annual_resret#94120816, CASE WHEN ((std_resret#94120703 = NA) OR (std_resret#94120703 = null)) THEN null ELSE cast(std_resret#94120703 as float) END AS std_resret#94120817, CASE WHEN ((Sharpe_resret#94120704 = NA) OR (Sharpe_resret#94120704 = null)) THEN null ELSE cast(Sharpe_resret#94120704 as float) END AS Sharpe_resret#94120818, CASE WHEN ((PctPos_resret#94120705 = NA) OR (PctPos_resret#94120705 = null)) THEN null ELSE cast(PctPos_resret#94120705 as float) END AS PctPos_resret#94120819, CASE WHEN ((TR_resret#94120706 = NA) OR (TR_resret#94120706 = null)) THEN null ELSE cast(TR_resret#94120706 as float) END AS TR_resret#94120820, CASE WHEN ((IR_resret#94120707 = NA) OR (IR_resret#94120707 = null)) THEN null ELSE cast(IR_resret#94120707 as float) END AS IR_resret#94120821, CASE WHEN ((annual_retnet#94120708 = NA) OR (annual_retnet#94120708 = null)) THEN null ELSE cast(annual_retnet#94120708 as float) END AS annual_retnet#94120823, CASE WHEN ((std_retnet#94120709 = NA) OR (std_retnet#94120709 = null)) THEN null ELSE cast(std_retnet#94120709 as float) END AS std_retnet#94120824, CASE WHEN ((Sharpe_retnet#94120710 = NA) OR (Sharpe_retnet#94120710 = null)) THEN null ELSE cast(Sharpe_retnet#94120710 as float) END AS Sharpe_retnet#94120825, CASE WHEN ((PctPos_retnet#94120711 = NA) OR (PctPos_retnet#94120711 = null)) THEN null ELSE cast(PctPos_retnet#94120711 as float) END AS PctPos_retnet#94120826, CASE WHEN ((TR_retnet#94120712 = NA) OR (TR_retnet#94120712 = null)) THEN null ELSE cast(TR_retnet#94120712 as float) END AS TR_retnet#94120882, CASE WHEN ((IR_retnet#94120713 = NA) OR (IR_retnet#94120713 = null)) THEN null ELSE cast(IR_retnet#94120713 as float) END AS IR_retnet#94121009, CASE WHEN ((retIC#94120714 = NA) OR (retIC#94120714 = null)) THEN null ELSE cast(retIC#94120714 as float) END AS retIC#94121011, CASE WHEN ((resretIC#94120715 = NA) OR (resretIC#94120715 = null)) THEN null ELSE cast(resretIC#94120715 as float) END AS resretIC#94121012, CASE WHEN ((turnover#94120716 = NA) OR (turnover#94120716 = null)) THEN null ELSE cast(turnover#94120716 as float) END AS turnover#94121014] +- FileScan csv [group#94120694,annual_bmret#94120695,annual_ret#94120696,std_ret#94120697,Sharpe_ret#94120698,PctPos_ret#94120699,TR_ret#94120700,IR_ret#94120701,annual_resret#94120702,std_resret#94120703,Sharpe_resret#94120704,PctPos_resret#94120705,TR_resret#94120706,IR_resret#94120707,annual_retnet#94120708,std_retnet#94120709,Sharpe_retnet#94120710,PctPos_retnet#94120711,TR_retnet#94120712,IR_retnet#94120713,retIC#94120714,resretIC#94120715,turnover#94120716] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(1 paths)[file:/srv/plusamp/data/default/ea-market/output/transcripts/transcript..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<group:string,annual_bmret:string,annual_ret:string,std_ret:string,Sharpe_ret:string,PctPos... ,None) (5) Scan csv Output [23]: [group#94120694, annual_bmret#94120695, annual_ret#94120696, std_ret#94120697, Sharpe_ret#94120698, PctPos_ret#94120699, TR_ret#94120700, IR_ret#94120701, annual_resret#94120702, std_resret#94120703, Sharpe_resret#94120704, PctPos_resret#94120705, TR_resret#94120706, IR_resret#94120707, annual_retnet#94120708, std_retnet#94120709, Sharpe_retnet#94120710, PctPos_retnet#94120711, TR_retnet#94120712, IR_retnet#94120713, retIC#94120714, resretIC#94120715, turnover#94120716] Batched: false Location: InMemoryFileIndex [file:/srv/plusamp/data/default/ea-market/output/transcripts/transcript_model_residualized/REPORT_stats.csv] ReadSchema: struct<group:string,annual_bmret:string,annual_ret:string,std_ret:string,Sharpe_ret:string,PctPos_ret:string,TR_ret:string,IR_ret:string,annual_resret:string,std_resret:string,Sharpe_resret:string,PctPos_resret:string,TR_resret:string,IR_resret:string,annual_retnet:string,std_retnet:string,Sharpe_retnet:string,PctPos_retnet:string,TR_retnet:string,IR_retnet:string,retIC:string,resretIC:string,turnover:string> (6) Project [codegen id : 1] Output [23]: [CASE WHEN (group#94120694 = null) THEN null ELSE group#94120694 END AS group#94120786, CASE WHEN ((annual_bmret#94120695 = NA) OR (annual_bmret#94120695 = null)) THEN null ELSE cast(annual_bmret#94120695 as float) END AS annual_bmret#94120787, CASE WHEN ((annual_ret#94120696 = NA) OR (annual_ret#94120696 = null)) THEN null ELSE cast(annual_ret#94120696 as float) END AS annual_ret#94120788, CASE WHEN ((std_ret#94120697 = NA) OR (std_ret#94120697 = null)) THEN null ELSE cast(std_ret#94120697 as float) END AS std_ret#94120811, CASE WHEN ((Sharpe_ret#94120698 = NA) OR (Sharpe_ret#94120698 = null)) THEN null ELSE cast(Sharpe_ret#94120698 as float) END AS Sharpe_ret#94120812, CASE WHEN ((PctPos_ret#94120699 = NA) OR (PctPos_ret#94120699 = null)) THEN null ELSE cast(PctPos_ret#94120699 as float) END AS PctPos_ret#94120813, CASE WHEN ((TR_ret#94120700 = NA) OR (TR_ret#94120700 = null)) THEN null ELSE cast(TR_ret#94120700 as float) END AS TR_ret#94120814, CASE WHEN ((IR_ret#94120701 = NA) OR (IR_ret#94120701 = null)) THEN null ELSE cast(IR_ret#94120701 as float) END AS IR_ret#94120815, CASE WHEN ((annual_resret#94120702 = NA) OR (annual_resret#94120702 = null)) THEN null ELSE cast(annual_resret#94120702 as float) END AS annual_resret#94120816, CASE WHEN ((std_resret#94120703 = NA) OR (std_resret#94120703 = null)) THEN null ELSE cast(std_resret#94120703 as float) END AS std_resret#94120817, CASE WHEN ((Sharpe_resret#94120704 = NA) OR (Sharpe_resret#94120704 = null)) THEN null ELSE cast(Sharpe_resret#94120704 as float) END AS Sharpe_resret#94120818, CASE WHEN ((PctPos_resret#94120705 = NA) OR (PctPos_resret#94120705 = null)) THEN null ELSE cast(PctPos_resret#94120705 as float) END AS PctPos_resret#94120819, CASE WHEN ((TR_resret#94120706 = NA) OR (TR_resret#94120706 = null)) THEN null ELSE cast(TR_resret#94120706 as float) END AS TR_resret#94120820, CASE WHEN ((IR_resret#94120707 = NA) OR (IR_resret#94120707 = null)) THEN null ELSE cast(IR_resret#94120707 as float) END AS IR_resret#94120821, CASE WHEN ((annual_retnet#94120708 = NA) OR (annual_retnet#94120708 = null)) THEN null ELSE cast(annual_retnet#94120708 as float) END AS annual_retnet#94120823, CASE WHEN ((std_retnet#94120709 = NA) OR (std_retnet#94120709 = null)) THEN null ELSE cast(std_retnet#94120709 as float) END AS std_retnet#94120824, CASE WHEN ((Sharpe_retnet#94120710 = NA) OR (Sharpe_retnet#94120710 = null)) THEN null ELSE cast(Sharpe_retnet#94120710 as float) END AS Sharpe_retnet#94120825, CASE WHEN ((PctPos_retnet#94120711 = NA) OR (PctPos_retnet#94120711 = null)) THEN null ELSE cast(PctPos_retnet#94120711 as float) END AS PctPos_retnet#94120826, CASE WHEN ((TR_retnet#94120712 = NA) OR (TR_retnet#94120712 = null)) THEN null ELSE cast(TR_retnet#94120712 as float) END AS TR_retnet#94120882, CASE WHEN ((IR_retnet#94120713 = NA) OR (IR_retnet#94120713 = null)) THEN null ELSE cast(IR_retnet#94120713 as float) END AS IR_retnet#94121009, CASE WHEN ((retIC#94120714 = NA) OR (retIC#94120714 = null)) THEN null ELSE cast(retIC#94120714 as float) END AS retIC#94121011, CASE WHEN ((resretIC#94120715 = NA) OR (resretIC#94120715 = null)) THEN null ELSE cast(resretIC#94120715 as float) END AS resretIC#94121012, CASE WHEN ((turnover#94120716 = NA) OR (turnover#94120716 = null)) THEN null ELSE cast(turnover#94120716 as float) END AS turnover#94121014] Input [23]: [group#94120694, annual_bmret#94120695, annual_ret#94120696, std_ret#94120697, Sharpe_ret#94120698, PctPos_ret#94120699, TR_ret#94120700, IR_ret#94120701, annual_resret#94120702, std_resret#94120703, Sharpe_resret#94120704, PctPos_resret#94120705, TR_resret#94120706, IR_resret#94120707, annual_retnet#94120708, std_retnet#94120709, Sharpe_retnet#94120710, PctPos_retnet#94120711, TR_retnet#94120712, IR_retnet#94120713, retIC#94120714, resretIC#94120715, turnover#94120716] (7) Filter [codegen id : 2] Input [10]: [group#94120786, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826] Condition : isnotnull(group#94120786) (8) InMemoryTableScan Output [3]: [group#93875766, Category#93875767, Label#93875768] Arguments: [group#93875766, Category#93875767, Label#93875768], [isnotnull(group#93875766)] (9) InMemoryRelation Arguments: [group#93875766, Category#93875767, Label#93875768], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@208e3fd9,StorageLevel(disk, memory, deserialized, 1 replicas),*(1) Project [CASE WHEN (group#93875754 = null) THEN null ELSE group#93875754 END AS group#93875766, CASE WHEN (Category#93875755 = null) THEN null ELSE Category#93875755 END AS Category#93875767, CASE WHEN (Label#93875756 = null) THEN null ELSE Label#93875756 END AS Label#93875768] +- FileScan csv [group#93875754,Category#93875755,Label#93875756] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(1 paths)[file:/srv/plusamp/data/default/ea-market/common/map_stats.csv], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<group:string,Category:string,Label:string> ,None) (10) Scan csv Output [3]: [group#93875754, Category#93875755, Label#93875756] Batched: false Location: InMemoryFileIndex [file:/srv/plusamp/data/default/ea-market/common/map_stats.csv] ReadSchema: struct<group:string,Category:string,Label:string> (11) Project [codegen id : 1] Output [3]: [CASE WHEN (group#93875754 = null) THEN null ELSE group#93875754 END AS group#93875766, CASE WHEN (Category#93875755 = null) THEN null ELSE Category#93875755 END AS Category#93875767, CASE WHEN (Label#93875756 = null) THEN null ELSE Label#93875756 END AS Label#93875768] Input [3]: [group#93875754, Category#93875755, Label#93875756] (12) Filter [codegen id : 1] Input [3]: [group#93875766, Category#93875767, Label#93875768] Condition : isnotnull(group#93875766) (13) BroadcastExchange Input [3]: [group#93875766, Category#93875767, Label#93875768] Arguments: HashedRelationBroadcastMode(List(input[0, string, false]),false), [id=#7514945] (14) BroadcastHashJoin [codegen id : 2] Left keys [1]: [group#94120786] Right keys [1]: [group#93875766] Join condition: None (15) Project [codegen id : 2] Output [11]: [Category#93875767, Label#93875768, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826] Input [13]: [group#94120786, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826, group#93875766, Category#93875767, Label#93875768] (16) CollectLimit Input [11]: [Category#93875767, Label#93875768, annual_ret#94120788, Sharpe_ret#94120812, PctPos_ret#94120813, annual_resret#94120816, Sharpe_resret#94120818, PctPos_resret#94120819, annual_retnet#94120823, Sharpe_retnet#94120825, PctPos_retnet#94120826] Arguments: 1000000