Apache Zeppelin 에는 Dynamic Form 이란 것이 있다..
paragraph에 사용자가 원하는 매개변수를 입력받을 수 있게 하는 양식을 제공하는 기능이다.
일단 메뉴얼 투척~~!
https://zeppelin.apache.org/docs/0.9.0/usage/dynamic_form/intro.html
메뉴얼 보면.. 매개 변수로 쓸 것을 ${변수명} 으로 사용하면 된다....
라고.. 아주~~~ 간단히 나와있다..
물론.. 이렇게 쓰면 되긴 된다..
그런데 말이지... 이렇게 쓰면.. 큰 문제가 생긴다..(나만 그런걸지도..)
일단 내가 하고 싶은거
공통 입력으로 시작일, 종료일, 매장 선택하여.. 매장별 매출등을 조회하고 싶음
1. 삽질 시작
아~~ 매뉴얼 대로 쿼리 안에다가 넣으니까 폼이 생기고... 오오~~ 신기하네~~ 잘된다..
흠.. 그럼.. 한 Note에 paragraph 3개 생성해서.. jdbc로 연동한 걸
하나는 표, 차트 두개로 해 볼까?
2. 당혹
흠... 되긴 되는데.. 이렇게 되면.. 각 paragraph 마다 입력 폼이 생기잖여.. 입력은 한번만 해서 돌려써야 욕을 안 먹는데..
흠?? 메뉴얼 아래쪽에 Using form Templates (scope: note) 란거 보니.. 전역 변수로 쓸 수 있는 것 같다..
첫번째 paragraph에다가 jdbc interpreter로 쿼리를 날릴때 ${변수명} 을 사용하면 값 입력 폼이 생기고, 이걸 두번째 paragraph에다가 사용하면 되겠지?
해서 jdbc interpreter에다가 $${변수명을} 쓰고 조회!
--> null point exception이 아마 발생할 것이다...
3. 고민
완전 당황함.. sql 프로파일러로 들여다 보니.. 쿼리가 오지도 않음..
왜 이럴까.. 정말 몇일을 고민함..
stacksoverflow에 질문해도 답하는 놈이 없음.
https://stackoverflow.com/questions/67767714/exchanging-variables-between-different-paragraphs
youtube 동영상을 보니.. 다들 기초 예제만 하지..
이렇게 결합해서 하는 경우가 없음.
하여.. 계속 몇일을 삽질을 하다가..
겨우 알아냄..
4. 해결
가) 일단 메뉴얼이 좀 부실하다.. 내용도 좀 잘못된 것이 많음
나) 다른 interpreter는 모르겠으나, 나처럼 jdbc 사용하는 경우에 대해선 메뉴얼이 너무 허접함
다) 하여간 정답 공개
a) 일단 공통으로 입력을 받을 폼은 첫번째 paragraph에 python으로 작성함.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | %python dtst = z.noteTextbox("시작일", "20200101") dted = z.noteTextbox("종료일", "20201231") print("Textbox note " + dtst) print("Textbox note " + dted) arrStore = [("001", "PubDept"), ("002", "Store1"), ("003", "Store2")] selStore = z.noteSelect("매장선택", arrStore ) print( "Select note " + selStore ) z.z.run("paragraph_1622092568030_1007352330") | cs |
1 2 3 | %jdbc EXEC USP_BIGDATA_003 '$${시작일}', '$${종료일}', '$${매장선택}'; | cs |
삽질하다 들렀습니다. 압도적 감사를 드립니다.!!
답글삭제노고에 압도적인 위로를 드립니다.. ^^
삭제