복붙노트

[SCALA] SPARK에서 왼쪽 및 오른쪽 키워드를 사용하는 방법 SQL

SCALA

SPARK에서 왼쪽 및 오른쪽 키워드를 사용하는 방법 SQL

나는 SQL을 촉발하는 새로운 오전

MS SQL에서, 우리는 ( 'D', 'A')를 한 다른 0 LEFT 키워드, LEFT (COLUMNNAME 1)이있다.

스파크 SQL에서 동일하게 구현하는 방법. 친절하게 안내 나

해결법

  1. ==============================

    1.당신은 왼쪽에서 취할 긍정적 인 POS와 하위 문자열 기능을 사용할 수 있습니다 :

    당신은 왼쪽에서 취할 긍정적 인 POS와 하위 문자열 기능을 사용할 수 있습니다 :

    import org.apache.spark.sql.functions.substring
    
    substring(column, 0, 1)
    

    음의 POS이 (가) 오른쪽에서 촬영합니다 :

    substring(column, -1, 1)
    

    그래서 스칼라에서 당신은 정의 할 수 있습니다

    import org.apache.spark.sql.Column
    import org.apache.spark.sql.functions.substring
    
    def left(col: Column, n: Int) = {
      assert(n >= 0)
      substring(col, 0, n)
    }
    
    def right(col: Column, n: Int) = {
      assert(n >= 0)
      substring(col, -n, n)
    }
    
    val df = Seq("foobar").toDF("str")
    
    df.select(
      Seq(left _, right _).flatMap(f => (1 to 3).map(i => f($"str", i))): _*
    ).show
    
    +--------------------+--------------------+--------------------+---------------------+---------------------+---------------------+
    |substring(str, 0, 1)|substring(str, 0, 2)|substring(str, 0, 3)|substring(str, -1, 1)|substring(str, -2, 2)|substring(str, -3, 3)|
    +--------------------+--------------------+--------------------+---------------------+---------------------+---------------------+
    |                   f|                  fo|                 foo|                    r|                   ar|                  bar|
    +--------------------+--------------------+--------------------+---------------------+---------------------+---------------------+
    

    마찬가지로 파이썬에서 :

    from pyspark.sql.functions import substring
    from pyspark.sql.column import Column
    
    def left(col, n):
        assert isinstance(col, (Column, str))
        assert isinstance(n, int) and n >= 0
        return substring(col, 0, n)
    
    def right(col, n):
        assert isinstance(col, (Column, str))
        assert isinstance(n, int) and n >= 0
        return substring(col, -n, n)
    
  2. ==============================

    2.

    import org.apache.spark.sql.functions._  
    

    대신 LEFT 함수의 사용 문자열 (열, 0, 1).

    어디에

    예 : LEFT 기능을 고려 :

    LEFT(upper(SKU),2)
    

    SparkSQL 문을 대응하는 것입니다 :

    substring(upper(SKU),1,2) 
    
  3. ==============================

    3.user6910411의 대답에 따라 구축하기 위해, 당신은 또한 당신의 문자 비교의 결과로 새 열을 구축 한 후 ISIN 사용할 수 있습니다.

    user6910411의 대답에 따라 구축하기 위해, 당신은 또한 당신의 문자 비교의 결과로 새 열을 구축 한 후 ISIN 사용할 수 있습니다.

    최종 전체 코드는 다음과 같을 것

    import org.apache.spark.sql.functions._
    
    df.select(substring($"Columnname", 0, 1) as "ch")
        .withColumn("result", when($"ch".isin("D", "A"), 1).otherwise(0))
    
  4. from https://stackoverflow.com/questions/40136922/how-to-use-left-and-right-keyword-in-spark-sql by cc-by-sa and MIT license