나는 다음 하이브 테이블을 가지고 있습니다. 열에 cycle_month
YYYYMM 형식의 값이 있습니다.
+---------------+--------------+------------+
| column_value | metric_name |cycle_month |
+---------------+--------------+------------+
| A37B | Mean | 202005 |
| ACCOUNT_ID | Mean | 202005 |
| ANB_200 | Mean | 202005 |
| ANB_201 | Mean | 202006 |
| AS82_RE | Mean | 202006 |
| ATTR001 | Mean | 202007 |
| ATTR001_RE | Mean | 202007 |
| ATTR002 | Mean | 202008 |
| ATTR002_RE | Mean | 202008 |
| ATTR003 | Mean | 202009 |
| ATTR004 | Mean | 202009 |
| ATTR005 | Mean | 202009 |
| ATTR006 | Mean | 202010 |
사용자가 전달한 cycle_month 값과 cycle_month-4 개월 사이의 값을 가져 오려면 동적 쿼리를 작성해야합니다.
Spark SQL 쿼리 :
select column_name, metric_name from table where cycle_month between add_months(to_date(202010,'YYYYMM'),-4) and 202010
오류 발생
[오류 10015] : 1 행 : 323 인수 길이 불일치 ''YYYYMM '': to_date ()에는 1 개의 인수가 필요하고 2 개를 얻었습니다 (상태 = 21000, 코드 = 10015).
예상 출력 :
+---------------+--------------+------------+
| column_value | metric_name |cycle_month |
+---------------+--------------+------------+
| ANB_201 | Mean | 202006 |
| AS82_RE | Mean | 202006 |
| ATTR001 | Mean | 202007 |
| ATTR001_RE | Mean | 202007 |
| ATTR002 | Mean | 202008 |
| ATTR002_RE | Mean | 202008 |
| ATTR003 | Mean | 202009 |
| ATTR004 | Mean | 202009 |
| ATTR005 | Mean | 202009 |
| ATTR006 | Mean | 202010 |
to_date
기능은 입력 및 반환 등의 문자열 기대 date
로 변경 기간에 YYYYMM
사용 date_format
마지막으로 캐스팅 기능 date
에를 int
.
Try with this query
select column_name, metric_name from table where cycle_month between int(date_format(add_months(to_date('202010','YYYYMM'),-4),'YYYYMM')) and 202010
UPDATE:
sql("select int(date_format(add_months(to_date('202010','YYYYMM'),-4),'YYYYMM'))").show()
#+------------------------------------------------------------------------------------------------+
#|CAST(date_format(CAST(add_months(to_date('202010', 'YYYYMM'), -4) AS TIMESTAMP), YYYYMM) AS INT)|
#+------------------------------------------------------------------------------------------------+
#| 201908|
#+------------------------------------------------------------------------------------------------+
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다