2017-07-26 61 views
0

我想選擇包含NULL以外的值的列。假設我有一個表ABC:Spark SQL-動態選擇Spark中不爲空值的列

SnapshotDate CreationDate Country Region CloseDate Probability BookingAmount RevenueAmount SnapshotDate1 CreationDate1 CloseDate1 
     null   null  null null  null 25 882000 0   null   null   null 
     null   null  null null  null 25 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 
     null   null  null null  null 0 882000 0   null   null   null 

那我就只需要選擇概率,BookingAmount和RevenueAmount列,因爲它們包含null以外的一些價值,而忽略只包含空值的列的其餘部分。

我試着做類似 - select * from abc where SnapshotDate!= null and CreationDate!= null and ..... 但是這並沒有幫助,因爲它會查找每一行。

注: - 有什麼樣 - sqlContext.sql(「選擇情況下COL1爲null,則不要選擇它,否則選擇它結束)從ABC X」)

我使用的火花1.6.1

有沒有辦法做到這一點?

在此先感謝

+0

您可以收集非空值的第一行檢查並獲取列的名稱,然後在先前的數據框上調用select。完成 –

+0

[刪除Spark SQL中的NULL列]可能的重複(https://stackoverflow.com/questions/45324762/remove-null-columns-in-spark-sql) –

回答

0

你需要像

select Probability, BookingAmount,RevenueAmount from abc 

如果我正確理解你。

+0

這只是一個例子。我不知道哪些列是空的。挑戰是在選擇語句中弄明白 –