== 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#94152530, Label#94152531, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908] Arguments: [Category#94152530, Label#94152531, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908] (2) InMemoryRelation Arguments: [Category#94152530, Label#94152531, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@208e3fd9,StorageLevel(disk, memory, deserialized, 1 replicas),*(2) Project [Category#94152530, Label#94152531, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908] +- *(2) BroadcastHashJoin [group#94205706], [group#94152529], Inner, BuildRight, false :- *(2) Filter isnotnull(group#94205706) : +- InMemoryTableScan [group#94205706, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908], [isnotnull(group#94205706)] : +- InMemoryRelation [group#94205706, annual_bmret#94205708, annual_ret#94205842, std_ret#94205866, Sharpe_ret#94205869, PctPos_ret#94205873, TR_ret#94205876, IR_ret#94205879, annual_resret#94205882, std_resret#94205884, Sharpe_resret#94205887, PctPos_resret#94205891, TR_resret#94205893, IR_resret#94205896, annual_retnet#94205900, std_retnet#94205903, Sharpe_retnet#94205906, PctPos_retnet#94205908, TR_retnet#94205911, IR_retnet#94205914, retIC#94205917, resretIC#94205920, turnover#94205923], StorageLevel(disk, memory, deserialized, 1 replicas) : +- *(1) Project [CASE WHEN (group#94205527 = null) THEN null ELSE group#94205527 END AS group#94205706, CASE WHEN ((annual_bmret#94205528 = NA) OR (annual_bmret#94205528 = null)) THEN null ELSE cast(annual_bmret#94205528 as float) END AS annual_bmret#94205708, CASE WHEN ((annual_ret#94205530 = NA) OR (annual_ret#94205530 = null)) THEN null ELSE cast(annual_ret#94205530 as float) END AS annual_ret#94205842, CASE WHEN ((std_ret#94205533 = NA) OR (std_ret#94205533 = null)) THEN null ELSE cast(std_ret#94205533 as float) END AS std_ret#94205866, CASE WHEN ((Sharpe_ret#94205535 = NA) OR (Sharpe_ret#94205535 = null)) THEN null ELSE cast(Sharpe_ret#94205535 as float) END AS Sharpe_ret#94205869, CASE WHEN ((PctPos_ret#94205537 = NA) OR (PctPos_ret#94205537 = null)) THEN null ELSE cast(PctPos_ret#94205537 as float) END AS PctPos_ret#94205873, CASE WHEN ((TR_ret#94205539 = NA) OR (TR_ret#94205539 = null)) THEN null ELSE cast(TR_ret#94205539 as float) END AS TR_ret#94205876, CASE WHEN ((IR_ret#94205541 = NA) OR (IR_ret#94205541 = null)) THEN null ELSE cast(IR_ret#94205541 as float) END AS IR_ret#94205879, CASE WHEN ((annual_resret#94205543 = NA) OR (annual_resret#94205543 = null)) THEN null ELSE cast(annual_resret#94205543 as float) END AS annual_resret#94205882, CASE WHEN ((std_resret#94205545 = NA) OR (std_resret#94205545 = null)) THEN null ELSE cast(std_resret#94205545 as float) END AS std_resret#94205884, CASE WHEN ((Sharpe_resret#94205547 = NA) OR (Sharpe_resret#94205547 = null)) THEN null ELSE cast(Sharpe_resret#94205547 as float) END AS Sharpe_resret#94205887, CASE WHEN ((PctPos_resret#94205550 = NA) OR (PctPos_resret#94205550 = null)) THEN null ELSE cast(PctPos_resret#94205550 as float) END AS PctPos_resret#94205891, CASE WHEN ((TR_resret#94205553 = NA) OR (TR_resret#94205553 = null)) THEN null ELSE cast(TR_resret#94205553 as float) END AS TR_resret#94205893, CASE WHEN ((IR_resret#94205555 = NA) OR (IR_resret#94205555 = null)) THEN null ELSE cast(IR_resret#94205555 as float) END AS IR_resret#94205896, CASE WHEN ((annual_retnet#94205557 = NA) OR (annual_retnet#94205557 = null)) THEN null ELSE cast(annual_retnet#94205557 as float) END AS annual_retnet#94205900, CASE WHEN ((std_retnet#94205559 = NA) OR (std_retnet#94205559 = null)) THEN null ELSE cast(std_retnet#94205559 as float) END AS std_retnet#94205903, CASE WHEN ((Sharpe_retnet#94205561 = NA) OR (Sharpe_retnet#94205561 = null)) THEN null ELSE cast(Sharpe_retnet#94205561 as float) END AS Sharpe_retnet#94205906, CASE WHEN ((PctPos_retnet#94205563 = NA) OR (PctPos_retnet#94205563 = null)) THEN null ELSE cast(PctPos_retnet#94205563 as float) END AS PctPos_retnet#94205908, CASE WHEN ((TR_retnet#94205565 = NA) OR (TR_retnet#94205565 = null)) THEN null ELSE cast(TR_retnet#94205565 as float) END AS TR_retnet#94205911, CASE WHEN ((IR_retnet#94205567 = NA) OR (IR_retnet#94205567 = null)) THEN null ELSE cast(IR_retnet#94205567 as float) END AS IR_retnet#94205914, CASE WHEN ((retIC#94205568 = NA) OR (retIC#94205568 = null)) THEN null ELSE cast(retIC#94205568 as float) END AS retIC#94205917, CASE WHEN ((resretIC#94205569 = NA) OR (resretIC#94205569 = null)) THEN null ELSE cast(resretIC#94205569 as float) END AS resretIC#94205920, CASE WHEN ((turnover#94205570 = NA) OR (turnover#94205570 = null)) THEN null ELSE cast(turnover#94205570 as float) END AS turnover#94205923] : +- FileScan csv [group#94205527,annual_bmret#94205528,annual_ret#94205530,std_ret#94205533,Sharpe_ret#94205535,PctPos_ret#94205537,TR_ret#94205539,IR_ret#94205541,annual_resret#94205543,std_resret#94205545,Sharpe_resret#94205547,PctPos_resret#94205550,TR_resret#94205553,IR_resret#94205555,annual_retnet#94205557,std_retnet#94205559,Sharpe_retnet#94205561,PctPos_retnet#94205563,TR_retnet#94205565,IR_retnet#94205567,retIC#94205568,resretIC#94205569,turnover#94205570] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(1 paths)[file:/srv/plusamp/data/default/ea-market/output/tm1/eatm1_score/REPORT..., 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=#7521581] +- *(1) Filter isnotnull(group#94152529) +- InMemoryTableScan [group#94152529, Category#94152530, Label#94152531], [isnotnull(group#94152529)] +- InMemoryRelation [group#94152529, Category#94152530, Label#94152531], StorageLevel(disk, memory, deserialized, 1 replicas) +- *(1) Project [CASE WHEN (group#94152498 = null) THEN null ELSE group#94152498 END AS group#94152510, CASE WHEN (Category#94152499 = null) THEN null ELSE Category#94152499 END AS Category#94152511, CASE WHEN (Label#94152500 = null) THEN null ELSE Label#94152500 END AS Label#94152512] +- FileScan csv [group#94152498,Category#94152499,Label#94152500] 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#94205706, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908] Arguments: [group#94205706, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908], [isnotnull(group#94205706)] (4) InMemoryRelation Arguments: [group#94205706, annual_bmret#94205708, annual_ret#94205842, std_ret#94205866, Sharpe_ret#94205869, PctPos_ret#94205873, TR_ret#94205876, IR_ret#94205879, annual_resret#94205882, std_resret#94205884, Sharpe_resret#94205887, PctPos_resret#94205891, TR_resret#94205893, IR_resret#94205896, annual_retnet#94205900, std_retnet#94205903, Sharpe_retnet#94205906, PctPos_retnet#94205908, TR_retnet#94205911, IR_retnet#94205914, retIC#94205917, resretIC#94205920, turnover#94205923], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@208e3fd9,StorageLevel(disk, memory, deserialized, 1 replicas),*(1) Project [CASE WHEN (group#94205527 = null) THEN null ELSE group#94205527 END AS group#94205706, CASE WHEN ((annual_bmret#94205528 = NA) OR (annual_bmret#94205528 = null)) THEN null ELSE cast(annual_bmret#94205528 as float) END AS annual_bmret#94205708, CASE WHEN ((annual_ret#94205530 = NA) OR (annual_ret#94205530 = null)) THEN null ELSE cast(annual_ret#94205530 as float) END AS annual_ret#94205842, CASE WHEN ((std_ret#94205533 = NA) OR (std_ret#94205533 = null)) THEN null ELSE cast(std_ret#94205533 as float) END AS std_ret#94205866, CASE WHEN ((Sharpe_ret#94205535 = NA) OR (Sharpe_ret#94205535 = null)) THEN null ELSE cast(Sharpe_ret#94205535 as float) END AS Sharpe_ret#94205869, CASE WHEN ((PctPos_ret#94205537 = NA) OR (PctPos_ret#94205537 = null)) THEN null ELSE cast(PctPos_ret#94205537 as float) END AS PctPos_ret#94205873, CASE WHEN ((TR_ret#94205539 = NA) OR (TR_ret#94205539 = null)) THEN null ELSE cast(TR_ret#94205539 as float) END AS TR_ret#94205876, CASE WHEN ((IR_ret#94205541 = NA) OR (IR_ret#94205541 = null)) THEN null ELSE cast(IR_ret#94205541 as float) END AS IR_ret#94205879, CASE WHEN ((annual_resret#94205543 = NA) OR (annual_resret#94205543 = null)) THEN null ELSE cast(annual_resret#94205543 as float) END AS annual_resret#94205882, CASE WHEN ((std_resret#94205545 = NA) OR (std_resret#94205545 = null)) THEN null ELSE cast(std_resret#94205545 as float) END AS std_resret#94205884, CASE WHEN ((Sharpe_resret#94205547 = NA) OR (Sharpe_resret#94205547 = null)) THEN null ELSE cast(Sharpe_resret#94205547 as float) END AS Sharpe_resret#94205887, CASE WHEN ((PctPos_resret#94205550 = NA) OR (PctPos_resret#94205550 = null)) THEN null ELSE cast(PctPos_resret#94205550 as float) END AS PctPos_resret#94205891, CASE WHEN ((TR_resret#94205553 = NA) OR (TR_resret#94205553 = null)) THEN null ELSE cast(TR_resret#94205553 as float) END AS TR_resret#94205893, CASE WHEN ((IR_resret#94205555 = NA) OR (IR_resret#94205555 = null)) THEN null ELSE cast(IR_resret#94205555 as float) END AS IR_resret#94205896, CASE WHEN ((annual_retnet#94205557 = NA) OR (annual_retnet#94205557 = null)) THEN null ELSE cast(annual_retnet#94205557 as float) END AS annual_retnet#94205900, CASE WHEN ((std_retnet#94205559 = NA) OR (std_retnet#94205559 = null)) THEN null ELSE cast(std_retnet#94205559 as float) END AS std_retnet#94205903, CASE WHEN ((Sharpe_retnet#94205561 = NA) OR (Sharpe_retnet#94205561 = null)) THEN null ELSE cast(Sharpe_retnet#94205561 as float) END AS Sharpe_retnet#94205906, CASE WHEN ((PctPos_retnet#94205563 = NA) OR (PctPos_retnet#94205563 = null)) THEN null ELSE cast(PctPos_retnet#94205563 as float) END AS PctPos_retnet#94205908, CASE WHEN ((TR_retnet#94205565 = NA) OR (TR_retnet#94205565 = null)) THEN null ELSE cast(TR_retnet#94205565 as float) END AS TR_retnet#94205911, CASE WHEN ((IR_retnet#94205567 = NA) OR (IR_retnet#94205567 = null)) THEN null ELSE cast(IR_retnet#94205567 as float) END AS IR_retnet#94205914, CASE WHEN ((retIC#94205568 = NA) OR (retIC#94205568 = null)) THEN null ELSE cast(retIC#94205568 as float) END AS retIC#94205917, CASE WHEN ((resretIC#94205569 = NA) OR (resretIC#94205569 = null)) THEN null ELSE cast(resretIC#94205569 as float) END AS resretIC#94205920, CASE WHEN ((turnover#94205570 = NA) OR (turnover#94205570 = null)) THEN null ELSE cast(turnover#94205570 as float) END AS turnover#94205923] +- FileScan csv [group#94205527,annual_bmret#94205528,annual_ret#94205530,std_ret#94205533,Sharpe_ret#94205535,PctPos_ret#94205537,TR_ret#94205539,IR_ret#94205541,annual_resret#94205543,std_resret#94205545,Sharpe_resret#94205547,PctPos_resret#94205550,TR_resret#94205553,IR_resret#94205555,annual_retnet#94205557,std_retnet#94205559,Sharpe_retnet#94205561,PctPos_retnet#94205563,TR_retnet#94205565,IR_retnet#94205567,retIC#94205568,resretIC#94205569,turnover#94205570] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(1 paths)[file:/srv/plusamp/data/default/ea-market/output/tm1/eatm1_score/REPORT..., 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#94205527, annual_bmret#94205528, annual_ret#94205530, std_ret#94205533, Sharpe_ret#94205535, PctPos_ret#94205537, TR_ret#94205539, IR_ret#94205541, annual_resret#94205543, std_resret#94205545, Sharpe_resret#94205547, PctPos_resret#94205550, TR_resret#94205553, IR_resret#94205555, annual_retnet#94205557, std_retnet#94205559, Sharpe_retnet#94205561, PctPos_retnet#94205563, TR_retnet#94205565, IR_retnet#94205567, retIC#94205568, resretIC#94205569, turnover#94205570] Batched: false Location: InMemoryFileIndex [file:/srv/plusamp/data/default/ea-market/output/tm1/eatm1_score/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#94205527 = null) THEN null ELSE group#94205527 END AS group#94205706, CASE WHEN ((annual_bmret#94205528 = NA) OR (annual_bmret#94205528 = null)) THEN null ELSE cast(annual_bmret#94205528 as float) END AS annual_bmret#94205708, CASE WHEN ((annual_ret#94205530 = NA) OR (annual_ret#94205530 = null)) THEN null ELSE cast(annual_ret#94205530 as float) END AS annual_ret#94205842, CASE WHEN ((std_ret#94205533 = NA) OR (std_ret#94205533 = null)) THEN null ELSE cast(std_ret#94205533 as float) END AS std_ret#94205866, CASE WHEN ((Sharpe_ret#94205535 = NA) OR (Sharpe_ret#94205535 = null)) THEN null ELSE cast(Sharpe_ret#94205535 as float) END AS Sharpe_ret#94205869, CASE WHEN ((PctPos_ret#94205537 = NA) OR (PctPos_ret#94205537 = null)) THEN null ELSE cast(PctPos_ret#94205537 as float) END AS PctPos_ret#94205873, CASE WHEN ((TR_ret#94205539 = NA) OR (TR_ret#94205539 = null)) THEN null ELSE cast(TR_ret#94205539 as float) END AS TR_ret#94205876, CASE WHEN ((IR_ret#94205541 = NA) OR (IR_ret#94205541 = null)) THEN null ELSE cast(IR_ret#94205541 as float) END AS IR_ret#94205879, CASE WHEN ((annual_resret#94205543 = NA) OR (annual_resret#94205543 = null)) THEN null ELSE cast(annual_resret#94205543 as float) END AS annual_resret#94205882, CASE WHEN ((std_resret#94205545 = NA) OR (std_resret#94205545 = null)) THEN null ELSE cast(std_resret#94205545 as float) END AS std_resret#94205884, CASE WHEN ((Sharpe_resret#94205547 = NA) OR (Sharpe_resret#94205547 = null)) THEN null ELSE cast(Sharpe_resret#94205547 as float) END AS Sharpe_resret#94205887, CASE WHEN ((PctPos_resret#94205550 = NA) OR (PctPos_resret#94205550 = null)) THEN null ELSE cast(PctPos_resret#94205550 as float) END AS PctPos_resret#94205891, CASE WHEN ((TR_resret#94205553 = NA) OR (TR_resret#94205553 = null)) THEN null ELSE cast(TR_resret#94205553 as float) END AS TR_resret#94205893, CASE WHEN ((IR_resret#94205555 = NA) OR (IR_resret#94205555 = null)) THEN null ELSE cast(IR_resret#94205555 as float) END AS IR_resret#94205896, CASE WHEN ((annual_retnet#94205557 = NA) OR (annual_retnet#94205557 = null)) THEN null ELSE cast(annual_retnet#94205557 as float) END AS annual_retnet#94205900, CASE WHEN ((std_retnet#94205559 = NA) OR (std_retnet#94205559 = null)) THEN null ELSE cast(std_retnet#94205559 as float) END AS std_retnet#94205903, CASE WHEN ((Sharpe_retnet#94205561 = NA) OR (Sharpe_retnet#94205561 = null)) THEN null ELSE cast(Sharpe_retnet#94205561 as float) END AS Sharpe_retnet#94205906, CASE WHEN ((PctPos_retnet#94205563 = NA) OR (PctPos_retnet#94205563 = null)) THEN null ELSE cast(PctPos_retnet#94205563 as float) END AS PctPos_retnet#94205908, CASE WHEN ((TR_retnet#94205565 = NA) OR (TR_retnet#94205565 = null)) THEN null ELSE cast(TR_retnet#94205565 as float) END AS TR_retnet#94205911, CASE WHEN ((IR_retnet#94205567 = NA) OR (IR_retnet#94205567 = null)) THEN null ELSE cast(IR_retnet#94205567 as float) END AS IR_retnet#94205914, CASE WHEN ((retIC#94205568 = NA) OR (retIC#94205568 = null)) THEN null ELSE cast(retIC#94205568 as float) END AS retIC#94205917, CASE WHEN ((resretIC#94205569 = NA) OR (resretIC#94205569 = null)) THEN null ELSE cast(resretIC#94205569 as float) END AS resretIC#94205920, CASE WHEN ((turnover#94205570 = NA) OR (turnover#94205570 = null)) THEN null ELSE cast(turnover#94205570 as float) END AS turnover#94205923] Input [23]: [group#94205527, annual_bmret#94205528, annual_ret#94205530, std_ret#94205533, Sharpe_ret#94205535, PctPos_ret#94205537, TR_ret#94205539, IR_ret#94205541, annual_resret#94205543, std_resret#94205545, Sharpe_resret#94205547, PctPos_resret#94205550, TR_resret#94205553, IR_resret#94205555, annual_retnet#94205557, std_retnet#94205559, Sharpe_retnet#94205561, PctPos_retnet#94205563, TR_retnet#94205565, IR_retnet#94205567, retIC#94205568, resretIC#94205569, turnover#94205570] (7) Filter [codegen id : 2] Input [10]: [group#94205706, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908] Condition : isnotnull(group#94205706) (8) InMemoryTableScan Output [3]: [group#94152529, Category#94152530, Label#94152531] Arguments: [group#94152529, Category#94152530, Label#94152531], [isnotnull(group#94152529)] (9) InMemoryRelation Arguments: [group#94152529, Category#94152530, Label#94152531], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@208e3fd9,StorageLevel(disk, memory, deserialized, 1 replicas),*(1) Project [CASE WHEN (group#94152498 = null) THEN null ELSE group#94152498 END AS group#94152510, CASE WHEN (Category#94152499 = null) THEN null ELSE Category#94152499 END AS Category#94152511, CASE WHEN (Label#94152500 = null) THEN null ELSE Label#94152500 END AS Label#94152512] +- FileScan csv [group#94152498,Category#94152499,Label#94152500] 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#94152498, Category#94152499, Label#94152500] 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#94152498 = null) THEN null ELSE group#94152498 END AS group#94152510, CASE WHEN (Category#94152499 = null) THEN null ELSE Category#94152499 END AS Category#94152511, CASE WHEN (Label#94152500 = null) THEN null ELSE Label#94152500 END AS Label#94152512] Input [3]: [group#94152498, Category#94152499, Label#94152500] (12) Filter [codegen id : 1] Input [3]: [group#94152529, Category#94152530, Label#94152531] Condition : isnotnull(group#94152529) (13) BroadcastExchange Input [3]: [group#94152529, Category#94152530, Label#94152531] Arguments: HashedRelationBroadcastMode(List(input[0, string, false]),false), [id=#7521581] (14) BroadcastHashJoin [codegen id : 2] Left keys [1]: [group#94205706] Right keys [1]: [group#94152529] Join condition: None (15) Project [codegen id : 2] Output [11]: [Category#94152530, Label#94152531, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908] Input [13]: [group#94205706, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908, group#94152529, Category#94152530, Label#94152531] (16) CollectLimit Input [11]: [Category#94152530, Label#94152531, annual_ret#94205842, Sharpe_ret#94205869, PctPos_ret#94205873, annual_resret#94205882, Sharpe_resret#94205887, PctPos_resret#94205891, annual_retnet#94205900, Sharpe_retnet#94205906, PctPos_retnet#94205908] Arguments: 1000000