제플린에서 Input (Text, Password, Select, Checkbox)를 사용할 수 있다. 이를 Dynamic Form 이라고 부른다.
크게 2가지 방법이 있다.
- Using form Templates (scope: paragraph)
- Using form Templates (scope: note) => 1번과 동일하나 '$'를 하나 더 붙이면 된다.
- Creates Programmatically (scope: paragraph)
3번의 경우 scala or python으로 활용하기에 input을 받아서 변환하기가 용이하다. 1번 form template을 활용하는 경우 편리한 부분도 있지만 3번만큼 자유도가 있진 않다.
사용하면서 삽질한 사례가 있어 소개해 본다.
Checkbox로 Dynamic Form을 구성했는데, 체크 정보가 입력이 안 되는 경우
column_name IN (${checkbox:column_a='option1'|'option2'|'option3','option1'|'option2'|'option3'})
(초기 default value 를 지정할 수 있으니 doc을 확인하자.)
위처럼 사용을 하려고 했는데, 초기 페이지 로딩시 체크도 되어 있지 않으며, 수동으로 선택해도 선택되지 않는 문제가 있었다. 원인은 알 수 없으나, (동일한 코드를) 신규 note에서 하면 정상적으로 동작했다. 여러 번 디버깅을 해 봤으나 어려웠다.
CheckBox value 이름이 한글이거나 공백 or 특수문자가 포함된 경우
column_name IN (${checkbox:column_a='옵션1'|'옵션2 공백포함'|'option3','옵션1'|'옵션2 공백포함'|'option3'})
Single Quotation (')으로 묶어주면 된다.
개인적으로는 3번 Programmatically 사용하는 방법을 선호한다. 그 이유는 scala, python 등 코드 레벨에서 유형이나 변환이 다소 자유롭고 쉽기 때문이다. SQL이 데이터 측면에서 다소 직관적이고 조직하기 편하긴 하나 그 만큼 제약도 많다.
'BigData > Zeppelin' 카테고리의 다른 글
REST Api 로 Zeppelin Note 실행하기 (0) | 2023.11.23 |
---|---|
REST Api 로 Zeppelin Note 실행하기 (0) | 2023.10.27 |