Функция To_char в кирпичах данных - PullRequest
0 голосов
/ 09 мая 2018

Я использую sql как язык для своей записной книжки в блоке данных.Хотите получить день недели от указанной даты.Для этого я использовал to_char (date, 'fmday').Получение ошибки как функции не регистрируется как временное или постоянное в блоках данных.Есть ли способ получить название дня другими способами.Дата указана в формате ггггммдд

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

У меня есть способ получить название дня недели, как показано ниже

date_format (to_date ( '20170821', 'YYyyMmDd'), 'EEEE')

Теперь я хочу передать столбец с целочисленным типом данных, но когда я передаю его в запрос, в качестве результата выводится ноль. Может кто-нибудь, пожалуйста, помогите

0 голосов
/ 10 мая 2018

получить название дня

Поскольку вы хотите получить название дня, вы можете использовать функцию date_format с аргументом 'EEEE', чтобы получить название дня, например, понедельник. Если вы хотите передать целое число (например, числа от 1 до 7), то вы можете просто кодировать оператор CASE, например:

%sql
SELECT 
  dayofweek( CAST( '2018-12-31' AS DATE ) ) AS  d,
  date_format( CAST( '2018-12-31' AS DATE ), 'EEEE' ) AS dayname, 
  CASE dayofweek( CAST( '2018-12-31' AS DATE ) ) 
    WHEN 1 THEN 'Monday' 
    WHEN 2 THEN 'Tuesday' 
    WHEN 3 THEN 'Wednesday' 
    WHEN 4 THEN 'Thursday' 
    WHEN 5 THEN 'Friday' 
    WHEN 6 THEN 'Saturday' 
    WHEN 7 THEN 'Sunday' 
    ELSE 'Unknown' 
  END AS caseTest

NB. Я кодировал CASE, чтобы начать неделю с День 1 - понедельник , что отличается от значения по умолчанию dayofweek; это может быть одной из причин, чтобы сделать это, то есть вы хотите другое значение по умолчанию.

Мои результаты:

My results

0 голосов
/ 09 мая 2018

Вы получаете эту ошибку, потому что to_char не является функцией SparkSQL. Вы можете увидеть список функций в ScalaDocs здесь: https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions$

Если ваша дата имеет тип DateType, вы можете сделать dayofweek(date) в SparkSQL.

...