Skip to content

Commit 3c6ae2e

Browse files
committed
[SPARK-8199] removed binary search
1 parent fb98ba0 commit 3c6ae2e

File tree

2 files changed

+57
-70
lines changed

2 files changed

+57
-70
lines changed

python/pyspark/sql/functions.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,7 @@ def ntile(n):
652652
return Column(sc._jvm.functions.ntile(int(n)))
653653

654654

655+
@ignore_unicode_prefix
655656
@since(1.5)
656657
def date_format(dateCol, format):
657658
"""
@@ -677,6 +678,7 @@ def date_format(dateCol, format):
677678
def year(col):
678679
"""
679680
Extract the year of a given date as integer.
681+
680682
>>> df0 = sqlContext.createDataFrame([('2015-04-08',)], ['a'])
681683
682684
>>> df0.select(year('a').alias('year')).collect()
@@ -690,6 +692,7 @@ def year(col):
690692
def quarter(col):
691693
"""
692694
Extract the quarter of a given date as integer.
695+
693696
>>> df0 = sqlContext.createDataFrame([('2015-04-08',)], ['a'])
694697
695698
>>> df0.select(quarter('a').alias('quarter')).collect()
@@ -703,6 +706,7 @@ def quarter(col):
703706
def month(col):
704707
"""
705708
Extract the month of a given date as integer.
709+
706710
>>> df0 = sqlContext.createDataFrame([('2015-04-08',)], ['a'])
707711
708712
>>> df0.select(month('a').alias('month')).collect()
@@ -716,6 +720,7 @@ def month(col):
716720
def day(col):
717721
"""
718722
Extract the day of the month of a given date as integer.
723+
719724
>>> sqlContext.createDataFrame([('2015-04-08',)], ['a']).select(day('a').alias('day')).collect()
720725
[Row(day=8)]
721726
"""
@@ -727,7 +732,9 @@ def day(col):
727732
def day_of_month(col):
728733
"""
729734
Extract the day of the month of a given date as integer.
735+
730736
>>> df0 = sqlContext.createDataFrame([('2015-04-08',)], ['a'])
737+
731738
>>> df0.select(day_of_month('a').alias('day')).collect()
732739
[Row(day=8)]
733740
"""
@@ -740,6 +747,7 @@ def day_in_year(col):
740747
"""
741748
Extract the day of the year of a given date as integer.
742749
>>> df0 = sqlContext.createDataFrame([('2015-04-08',)], ['a'])
750+
743751
>>> df0.select(day_in_year('a').alias('day')).collect()
744752
[Row(day=98)]
745753
"""
@@ -751,6 +759,7 @@ def day_in_year(col):
751759
def hour(col):
752760
"""
753761
Extract the hours of a given date as integer.
762+
754763
>>> df0 = sqlContext.createDataFrame([('2015-04-08 13:08:15',)], ['a'])
755764
756765
>>> df0.select(hour('a').alias('hour')).collect()
@@ -777,6 +786,7 @@ def minute(col):
777786
def second(col):
778787
"""
779788
Extract the seconds of a given date as integer.
789+
780790
>>> df0 = sqlContext.createDataFrame([('2015-04-08 13:08:15',)], ['a'])
781791
782792
>>> df0.select(second('a').alias('second')).collect()
@@ -790,6 +800,7 @@ def second(col):
790800
def week_of_year(col):
791801
"""
792802
Extract the week number of a given date as integer.
803+
793804
>>> df0 = sqlContext.createDataFrame([('2015-04-08',)], ['a'])
794805
795806
>>> df0.select(week_of_year('a').alias('week')).collect()

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala

Lines changed: 46 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -510,42 +510,30 @@ object DateTimeUtils {
510510
isLeap = false
511511
}
512512

513-
if (dayInYear <= 181) {
514-
if (dayInYear <= 90) {
515-
if (dayInYear <= 31) {
516-
1
517-
} else if (dayInYear <= 59 || (isLeap && dayInYear <= 60)) {
518-
2
519-
} else {
520-
3
521-
}
522-
} else {
523-
if (dayInYear <= 120) {
524-
4
525-
} else if (dayInYear <= 151) {
526-
5
527-
} else {
528-
6
529-
}
530-
}
513+
if (dayInYear <= 31) {
514+
1
515+
} else if (dayInYear <= 59 || (isLeap && dayInYear <= 60)) {
516+
2
517+
} else if (dayInYear <= 90) {
518+
3
519+
} else if (dayInYear <= 120) {
520+
4
521+
} else if (dayInYear <= 151) {
522+
5
523+
} else if (dayInYear <= 181) {
524+
6
525+
} else if (dayInYear <= 212) {
526+
7
527+
} else if (dayInYear <= 243) {
528+
8
529+
} else if (dayInYear <= 273) {
530+
9
531+
} else if (dayInYear <= 304) {
532+
10
533+
} else if (dayInYear <= 334) {
534+
11
531535
} else {
532-
if (dayInYear <= 273) {
533-
if (dayInYear <= 212) {
534-
7
535-
} else if (dayInYear <= 243) {
536-
8
537-
} else {
538-
9
539-
}
540-
} else {
541-
if (dayInYear <= 304) {
542-
10
543-
} else if (dayInYear <= 334) {
544-
11
545-
} else {
546-
12
547-
}
548-
}
536+
12
549537
}
550538
}
551539

@@ -561,42 +549,30 @@ object DateTimeUtils {
561549
isLeap = false
562550
}
563551

564-
if (dayInYear <= 181) {
565-
if (dayInYear <= 90) {
566-
if (dayInYear <= 31) {
567-
dayInYear
568-
} else if (dayInYear <= 59 || (isLeap && dayInYear <= 60)) {
569-
dayInYear - 31
570-
} else {
571-
dayInYear - 59
572-
}
573-
} else {
574-
if (dayInYear <= 120) {
575-
dayInYear - 90
576-
} else if (dayInYear <= 151) {
577-
dayInYear - 120
578-
} else {
579-
dayInYear - 151
580-
}
581-
}
552+
if (dayInYear <= 31) {
553+
dayInYear
554+
} else if (dayInYear <= 59 || (isLeap && dayInYear <= 60)) {
555+
dayInYear - 31
556+
} else if (dayInYear <= 90) {
557+
dayInYear - 59
558+
} else if (dayInYear <= 120) {
559+
dayInYear - 90
560+
} else if (dayInYear <= 151) {
561+
dayInYear - 120
562+
} else if (dayInYear <= 181) {
563+
dayInYear - 151
564+
} else if (dayInYear <= 212) {
565+
dayInYear - 181
566+
} else if (dayInYear <= 243) {
567+
dayInYear - 212
568+
} else if (dayInYear <= 273) {
569+
dayInYear - 243
570+
} else if (dayInYear <= 304) {
571+
dayInYear - 273
572+
} else if (dayInYear <= 334) {
573+
dayInYear - 304
582574
} else {
583-
if (dayInYear <= 273) {
584-
if (dayInYear <= 212) {
585-
dayInYear - 181
586-
} else if (dayInYear <= 243) {
587-
dayInYear - 212
588-
} else {
589-
dayInYear - 243
590-
}
591-
} else {
592-
if (dayInYear <= 304) {
593-
dayInYear - 273
594-
} else if (dayInYear <= 334) {
595-
dayInYear - 304
596-
} else {
597-
dayInYear - 334
598-
}
599-
}
575+
dayInYear - 334
600576
}
601577
}
602578
}

0 commit comments

Comments
 (0)