Habréã§TOSãæäœããããšã«é¢ããèšäºãäžè¶³ããŠããããšã«ãç§ã¯å€å°é©ããŸããã ãããããããã«ã¯ç§ã«ã¯ç解ã§ããªãçç±ããããŸãã ããã§ãã£ãŠããç§ã¯ãã®ã®ã£ãããåããããšããŸãã
ããããããã®èšäºãæžããŠãããšãã«ãããã€ãã®åé¡ã«ã€ããŠè©³ãã説æããããŠããããããã¿ãã¬ã®äžã«ããã€ãã®æ瀺ãé ããŸããã
ãã®ãããTOSã¯ãªãŒãã³ãœãŒã¹ã®ããŒã¿çµ±åãœãªã¥ãŒã·ã§ã³ã§ãã ããŒã¿ãTOSã«å€æããããã»ã¹ãã«ã¹ã¿ãã€ãºããããã®ã¡ã€ã³ããŒã«ã¯ãããŒã¿ãšãããã®éã®é¢ä¿ãå€æããåã ã®ããŒããè¿œå ããã³æ§æã§ããç¹å¥ãªããžã¥ã¢ã«ãšãã£ã¿ãŒã§ãã
TOSã®èå³æ·±ãæ©èœãšå€§ããªå©ç¹ã¯ãç§ã®æèŠã§ã¯ãTOSãã³ã³ããŒãã³ããšéä¿¡ãJavaã³ãŒãã«å€æãããšããäºå®ã§ãã å®éãããŒã¿å€æã°ã©ãã«åºã¥ããŠã³ãŒããçæããæ©èœãåããJavaã®ã©ã€ãã©ãªãååŸããŸãã ããã«ãããã±ãŒãžãã³ã³ãã€ã«ããŠãJavaããããTOSããªãå¯èœæ§ã®ããä»»æã®ãã·ã³ã§å®è¡ã§ããŸãã
ã³ãŒãçæã«ãããããã«ãã©ã¹ãåŸãããŸããç¬èªã®ã³ãŒããèšè¿°ããããšã§TOSã®æ©èœãæ¡åŒµã§ããŸãïŒãã®ããã®ç¹å¥ãªããŒã«ããããŸãïŒã
Talendã®ç¬ç«ããå šäœçãªããŒã¿å€æã¯ãžã§ããšåŒã°ããŸãã ã¿ã¹ã¯ã¯ãµãã¿ã¹ã¯ã§æ§æããããµãã¿ã¹ã¯ã¯ã³ã³ããŒãã³ããšé¢ä¿ã§æ§æãããŸãã ã³ã³ããŒãã³ãã¯ããŒã¿ãçŽæ¥å€æããããå ¥å/åºåãè¡ããŸãã æ¥ç¶ã«ã¯ããã€ãã®çš®é¡ããããŸãã ã³ã³ããŒãã³ãéã§ããŒã¿ã亀æããäž»ãªæ段ã¯ãããããŒãã¿ã€ãã®æ¥ç¶ïŒãããŒïŒã§ãã ã¹ããªãŒã ã¯ãããŒã¿ããŒã¹ã®ããŒãã«ã«éåžžã«äŒŒãŠããŸãã ã¹ããªãŒã ã«ã¯ãã¹ããŒãïŒãã£ãŒã«ãã®ååãã¿ã€ããå±æ§ïŒãšããŒã¿ïŒãã£ãŒã«ãå€ïŒããããŸãã ããŒã¿èªäœãšãããŒå³ã®äž¡æ¹ã¯ãåŠçäžã«å€æŽã§ããŸãã TOSã®ã¹ããªãŒã ã¯äºãã«åæããŠããŸããã ãããã¯äºãã«ç¬ç«ããŠåäœããŸãã
次ã«ãäŸã䜿çšããŠãããŒã¿åŠçããã»ã¹ã®æ§ææ¹æ³ã瀺ããŸãã
次ã®åœ¢åŒã®CSVãã¡ã€ã«ããããšããŸãã
id,event_name,event_datetime,tag
1,"Hello, world!",2017-01-10T18:00:00Z,
2,"Event2",2017-01-10T19:00:00Z,tag1=q
3,Event3,2017-01-10T20:00:00Z,
4,"Hello, world!",2017-01-10T21:00:00Z,tag2=a
5,Event2,2017-01-10T22:00:00Z,
...
ãããŠãç°ãªãã€ãã³ãïŒã€ãã³ããã£ãŒã«ãïŒã®ããŒã¿ãåé¢ããŸãã
ããŒã¿ã®æäœãéå§ããåã«ãã¿ã¹ã¯ãäœæããå¿ èŠããããŸãã äœæããã»ã¹ã¯ç°¡åãªã®ã§ã説æããŸããã
ãããã£ãŠãæåã«è¡ãå¿ èŠãããã®ã¯ãCSVãèªã¿åã£ãŠè§£æããããšã§ãã æåã«ãå ¥åCSVãã¡ã€ã«ã®ã¡ã¿ããŒã¿ã¬ã³ãŒããäœæããŸã-ããã«ãããããã«äœæ¥ãç°¡åã«ãªããŸãïŒã¡ã¿ããŒã¿->ãã¡ã€ã«åºåãïŒã ãã¡ã€ã«åºåãã®äœæã¯å€ããå°ãªããçŽæçã§ããããã詳现ãªèª¬æã¯ãã¿ãã¬ã®äžã«é ãããŠããŸãã
èšåãã䟡å€ãããå¯äžã®ããšã¯ããã©ãŒã ãã£ãŒã«ãã®å€ã眮æãããšãã®åŒçšç¬Šã®é 眮ã§ãã ããã¯ãåºåããã¡ã€ã«ã®äœæã ãã§ãªãããã©ãŒã å ã®ä»ã®ã»ãšãã©ã®ãã£ãŒã«ãã«ãé©çšãããŸãã å®éã«ã¯ãããŸããŸãªãã£ãŒã«ãã®å€ã®ã»ãšãã©ãJavaã³ãŒãã§ãçŸç¶ã®ãŸãŸãã§çœ®ãæããããŸãã ç¹å®ã®ã¿ã€ãã®JavaåŒã§ãªããã°ãªããŸããã æååå®æ°ãæå®ããå ŽåãåŒçšç¬Šã§å²ãå¿ èŠããããŸãã ããã«ãããæè»æ§ãåäžããŸãã å€ãå¿ èŠãªå Žåã¯ãã€ã§ãããã©ã¡ãŒã¿ãŒãŸãã¯åŒã®å€ã眮ãæããããšãã§ããŸãã
åºåããã¡ã€ã«ã®äœæ
次ã«ãååãæå®ããŠãã¡ã€ã«ãéžæããå¿ èŠããããŸãã å ¥åããŒã¿ãå«ãCSVãã¡ã€ã«ãéžæããŸãã
次ã®ã¹ãããã¯ããã¡ã€ã«è§£æã®æ§æã§ãã
èå³æ·±ããã£ãŒã«ãïŒ
ãã£ãŒã«ãåºåãæå-ã³ã³ãããããŸãã
ããšã¹ã±ãŒãæåèšå®ãã»ã¯ã·ã§ã³ã§ã¯ããããã¹ããšã³ã¯ããŒãžã£ããã£ãŒã«ãã«æ³šç®ããŠããŸãã å€ã\ããèšå®ããŸã-ã€ãŸã ãäºéåŒçšç¬Šãã çŸåšãäºéåŒçšç¬Šå ã®ãã¹ãŠã®ããã¹ãã¯ãå éšã«ã»ãã¬ãŒã¿ãŒïŒã³ã³ãïŒãããå Žåã§ããåäžã®å šäœãšããŠè§£éãããŸãã
å³åŽã§ãè¡ã®ã¹ããããšå¶éãæ§æã§ããŸãã ããã¯ç§ãã¡ã«ã¯èå³ããããŸããã
ãã¿ã€ãã«ããŒãååãšããŠèšå®ãããããã¯ã¹ããªã³ã«ããŸãã æåã®è¡ã«ååããããŸãã ãããã®å€ã¯ãã£ãŒã«ãåã«ãªããŸãã
[ãã¬ãã¥ãŒã®æŽæ°]ãã¿ã³ã䜿çšãããšããã¬ãã¥ãŒé åãæŽæ°ã§ããŸãã ç§ãã¡ã¯ãã¹ãŠãé 調ã§ããããšã確èªããå ã«é²ã¿ãŸãã
次ã«ãåºåã¹ããªãŒã ã®åè·¯ãæ§æããå¿ èŠããããŸãã ã¹ããŒãã¯ãå ¥åããããã£ãŒã«ãã®ã»ããã§ãã åãã£ãŒã«ãã«ã¯ãããã€ãã®å±æ§ãå²ãåœãŠãããšãã§ããŸãã
CSVãã¡ã€ã«ã®ããããŒã¯ãã£ãŒã«ãåã«ãªã£ãŠããŸãã åãã£ãŒã«ãã®ã¿ã€ãã¯ããã¡ã€ã«å ã®ããŒã¿ã«åºã¥ããŠèªåçã«æ±ºå®ãããŸãã ããã§ã¯ãæ¥ä»åœ¢åŒãé€ããŠãã¹ãŠãé©åã§ãã ãã¡ã€ã«ã®æ¥ä»ã¯ãã®2017-01-10T22ïŒ00ïŒ00Zã®ããã«ãªãããã®è§£æã«ã¯ãã³ãã¬ãŒããyyyy-MM-dd'T'HHïŒmmïŒss'Z 'ããå¿ èŠã§ãã åŒçšç¬Šã«æ³šæããŠãã ããã å®éã«ã¯ãããŸããŸãªãã£ãŒã«ãã®å€ã®ã»ãšãã©ãããã®ãŸãŸãJavaã³ãŒãã«çœ®ãæããããŸãã ç¹å®ã®ã¿ã€ãã®JavaåŒã§ãªããã°ãªããŸããã æååå®æ°ãæå®ããå ŽåãåŒçšç¬Šã§å²ãå¿ èŠããããŸãã
ããã§ãç¹å®ã®åœ¢åŒã®CSVãã¡ã€ã«çšã®ããŒãµãŒãã³ãã¬ãŒããã§ããŸããã
次ã«ãååãæå®ããŠãã¡ã€ã«ãéžæããå¿ èŠããããŸãã å ¥åããŒã¿ãå«ãCSVãã¡ã€ã«ãéžæããŸãã
次ã®ã¹ãããã¯ããã¡ã€ã«è§£æã®æ§æã§ãã
èå³æ·±ããã£ãŒã«ãïŒ
ãã£ãŒã«ãåºåãæå-ã³ã³ãããããŸãã
ããšã¹ã±ãŒãæåèšå®ãã»ã¯ã·ã§ã³ã§ã¯ããããã¹ããšã³ã¯ããŒãžã£ããã£ãŒã«ãã«æ³šç®ããŠããŸãã å€ã\ããèšå®ããŸã-ã€ãŸã ãäºéåŒçšç¬Šãã çŸåšãäºéåŒçšç¬Šå ã®ãã¹ãŠã®ããã¹ãã¯ãå éšã«ã»ãã¬ãŒã¿ãŒïŒã³ã³ãïŒãããå Žåã§ããåäžã®å šäœãšããŠè§£éãããŸãã
å³åŽã§ãè¡ã®ã¹ããããšå¶éãæ§æã§ããŸãã ããã¯ç§ãã¡ã«ã¯èå³ããããŸããã
ãã¿ã€ãã«ããŒãååãšããŠèšå®ãããããã¯ã¹ããªã³ã«ããŸãã æåã®è¡ã«ååããããŸãã ãããã®å€ã¯ãã£ãŒã«ãåã«ãªããŸãã
[ãã¬ãã¥ãŒã®æŽæ°]ãã¿ã³ã䜿çšãããšããã¬ãã¥ãŒé åãæŽæ°ã§ããŸãã ç§ãã¡ã¯ãã¹ãŠãé 調ã§ããããšã確èªããå ã«é²ã¿ãŸãã
次ã«ãåºåã¹ããªãŒã ã®åè·¯ãæ§æããå¿ èŠããããŸãã ã¹ããŒãã¯ãå ¥åããããã£ãŒã«ãã®ã»ããã§ãã åãã£ãŒã«ãã«ã¯ãããã€ãã®å±æ§ãå²ãåœãŠãããšãã§ããŸãã
CSVãã¡ã€ã«ã®ããããŒã¯ãã£ãŒã«ãåã«ãªã£ãŠããŸãã åãã£ãŒã«ãã®ã¿ã€ãã¯ããã¡ã€ã«å ã®ããŒã¿ã«åºã¥ããŠèªåçã«æ±ºå®ãããŸãã ããã§ã¯ãæ¥ä»åœ¢åŒãé€ããŠãã¹ãŠãé©åã§ãã ãã¡ã€ã«ã®æ¥ä»ã¯ãã®2017-01-10T22ïŒ00ïŒ00Zã®ããã«ãªãããã®è§£æã«ã¯ãã³ãã¬ãŒããyyyy-MM-dd'T'HHïŒmmïŒss'Z 'ããå¿ èŠã§ãã åŒçšç¬Šã«æ³šæããŠãã ããã å®éã«ã¯ãããŸããŸãªãã£ãŒã«ãã®å€ã®ã»ãšãã©ãããã®ãŸãŸãJavaã³ãŒãã«çœ®ãæããããŸãã ç¹å®ã®ã¿ã€ãã®JavaåŒã§ãªããã°ãªããŸããã æååå®æ°ãæå®ããå ŽåãåŒçšç¬Šã§å²ãå¿ èŠããããŸãã
ããã§ãç¹å®ã®åœ¢åŒã®CSVãã¡ã€ã«çšã®ããŒãµãŒãã³ãã¬ãŒããã§ããŸããã
次ã«ã解æã«é¢äžããã³ã³ããŒãã³ããè¿œå ããŸãã å¿ èŠãªã³ã³ããŒãã³ãã¯tFileInputDelimitedãšåŒã°ããŸãã
ã³ã³ããŒãã³ãã®è¿œå ã«ã€ããŠ
ã³ã³ããŒãã³ãã¯ãã»ã¯ã·ã§ã³ã®ã³ã³ããŒãã³ãã¡ãã¥ãŒïŒéåžžã¯å³åŽïŒã«ããïŒããã¡ã€ã«->å
¥åãã»ã¯ã·ã§ã³ã®tFileInputDelimitedïŒãã¯ãŒã¯ã¹ããŒã¹ã«ãã©ãã°ã§ããŸãããããã¯ç°¡åã§ããã¯ãŒã¯ã¹ããŒã¹ã®ä»»æã®å Žæãã¯ãªãã¯ããŠãã³ã³ããŒãã³ãã®ååãå
¥åãå§ããŸãã ã³ã³ããŒãã³ãã®ãªã¹ããå«ãããŒã«ãããã衚瀺ãããŸãã
ã³ã³ããŒãã³ãã®æ¥ç¶ã«ã€ããŠ
ã¢ã€ã³ã³ãã¯ãªãã¯ãããšãã³ã³ããŒãã³ããéžæã§ããŸãã ãã®å Žåãã¢ã€ã³ã³ã®è¿ãã«ãOãã¿ãã衚瀺ãããã³ã³ããŒãã³ãã®èšå®ã衚瀺ãããŠã£ã³ããŠã«çŸåšã®ç¶æ
ã«é¢ããæ
å ±ã衚瀺ãããŸãã ãã¿ãããOãïŒåºåïŒã¯åºåã§ãã ãã«ããããšã§ãã³ã³ããŒãã³ããå¥ã®ã³ã³ããŒãã³ãã«æ¥ç¶ã§ããŸãã
次ã«ãããŒãµãŒãæ§æããŸãã èšå®ã®tFileInputDelimitedã³ã³ããŒãã³ãã§ããããããã£ã¿ã€ãããããªããžããªãã«èšå®ãã以åã«äœæãããã³ãã¬ãŒããéžæããŸãã
ããã§ãããŒãµãŒã¯å¿ èŠãªåœ¢åŒã®ãã¡ã€ã«ã解æããããã«æ§æãããäœæ¥ãéå§ãããšããœãŒã¹CSVãã¡ã€ã«ã®å 容ããã°ã«è¡šç€ºãããŸãã åé¡ã¯ãããŒãµãŒããã³ãã¬ãŒãã«é¢é£ä»ããããŠããå Žåããã³ãã¬ãŒãå ã®ãã¡ã€ã«ã«å¯ŸããŠããŒããã¥ãŒãã³ã°ãããããšã§ãã åã圢åŒã®å¥ã®ãã¡ã€ã«ãæå®ããããšã¯ã§ããŸãããããã¯ãã©ã®ãã¡ã€ã«ãåŠçããããäºåã«ç¥ããªãå ŽåãããŸã䟿å©ã§ã¯ãªãå ŽåããããŸãã
ãã®ç¶æ³ããæãåºãã«ã¯2ã€ã®æ¹æ³ããããŸãã æåã®æ¹æ³ã¯ãåžžã«ãã³ãã¬ãŒãã®ãã¡ã€ã«ãç®çã®ãã¡ã€ã«ã«çœ®ãæããããšã§ãã 2ã€ç®ã¯ãããŒãµãŒã³ã³ããŒãã³ããšãã³ãã¬ãŒããçµã³ä»ããããšã§ãã ãã®å Žåã解æèšå®ã¯ä¿åã§ããŸãããå ¥åãã¡ã€ã«ãèšå®ããããšã¯å¯èœã§ãã æåã®æ¹æ³ã®æ¬ ç¹ã¯æããã§ã2çªç®ã®æ¹æ³ã®æ¬ ç¹ã«ã¯ããã³ãã¬ãŒããšããŒãµãŒéã®åæã®æ¬ åŠãå«ãŸããŸãã ãã³ãã¬ãŒããå€æŽããå ŽåãããŒãµãŒèšå®ãæåã§åæããå¿ èŠããããŸãã 2çªç®ã®æ¹æ³ã§ããã³ãã¬ãŒãããããŒãµãŒãåãé¢ããŸãã ãããè¡ãã«ã¯ããããããã£ã¿ã€ãããã£ãŒã«ãã«ããã«ãã€ã³ãå€ãè¿ããŸãã èšå®ã¯ä¿åãããŸããããå€æŽããæ©äŒããããŸããã
å ¥åãã¡ã€ã«ã®ååãåŒcontext.INPUT_CSVã«å€æŽããŸãã ååã¯åŒçšç¬ŠïŒæååå®æ°ïŒã§å²ãŸããåŒçšç¬Šãªãã®åŒã§ããããšã«æ³šæããŠãã ããã ããã¯ã³ã³ããã¹ããã©ã¡ãŒã¿ã§ãã ãŸããã³ã³ããã¹ãã¿ãã§ãã®ãã©ã¡ãŒã¿ãŒãäœæããå¿ èŠããããŸãã ãããã°çšã®ããã©ã«ãå€ãèšå®ã§ããŸãã ã³ã³ããã¹ããã©ã¡ãŒã¿ãŒã¯ãã³ãã³ãã©ã€ã³ãã©ã¡ãŒã¿ãŒãšããŠèšå®ã§ããŸãïŒ--context_param INPUT_CSV = pathãªã©ïŒã ããã¯ãã³ã³ãã€ã«æžã¿Javaããã±ãŒãžã®å®è¡ã«é©çšãããŸãã
次ã ããŒã¿ãã€ãã³ãåã§åºåãå¿ èŠããããŸãã
ããã«ã¯ãtMapã³ã³ããŒãã³ããšããã€ãã®tFilterRowãå¿ èŠã§ãã èªåèªèº«ã2ã€ã®tFilterRowã«å¶éããŸãããã 2ã€ã®ç°ãªãã€ãã³ãã®ã¿ããã€ã©ã€ãããŸãã å³ã«ç€ºãããã«ããããæ¥ç¶ããŸãã
tMapãštFilterRowãæ¥ç¶ããå Žåãæ¥ç¶ã®ååãå ¥åããå¿ èŠããããŸãã ååã¯äžæã§ããå¿ èŠããããŸãã 次ã«ãtMapã³ã³ããŒãã³ããæ§æããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãtMapã¢ã€ã³ã³ãããã«ã¯ãªãã¯ããããã³ã³ããŒãã³ãããããã£ããã«ãããšãã£ã¿ãŒãåŒã³åºããŠãMap Editorã¡ãã¥ãŒã«å ¥ããŸãã
ãã®å Žåãã¹ããªãŒã ããã³ããŒãããã ãã§ããããããã¹ãŠã®å ¥åããŒã¿ãã£ãŒã«ãïŒå·ŠåŽïŒãååºåã¹ããªãŒã ïŒå³åŽïŒã«ãã©ãã°ã¢ã³ãããããããã ãã§ãã
äžå€®ã®ã»ã¯ã·ã§ã³ã§ã¯ãå éšå€æ°ãæå®ã§ããŸãïŒè¡çªå·ããã©ã¡ãŒã¿ãŒçœ®æãªã©ã®æ°ããå€ãçæããããã«äœ¿çšã§ããŸãïŒã ãšãã£ã¿ãŒã®åã»ã«ã§ãåŒãäœæã§ããŸãã å®éãç§ãã¡ãè¡ã£ãã®ã¯å€ã®çœ®æã§ãã ã¹ã¯ãªãŒã³ã·ã§ããã®row1ã¯ãå ¥åã¹ããªãŒã ã®ååã§ãã ããã§ãããããŒã¯å ¥åã2ã€ã®ã¹ããªãŒã ã«åå²ããŸãã
tFilterRowãã£ã«ã¿ãŒã®æ§æã¯ç¹å¥ãªãã®ã§ã¯ãããŸããã
tFilterRowã®èšå®ã«ã€ããŠ
å
¥ååãè¿œå ããæ¡ä»¶ã¿ã€ããéžæããŠå€ãå
¥åããŸãã event_nameãã£ãŒã«ãã«ãã£ã«ã¿ãŒãèšå®ããŸãã 1ã€ã®ãã£ã«ã¿ãŒã¯ãçãããã©ããïŒ==ïŒãHelloãworldïŒãïŒåŒçšç¬Šã§å²ãŸããŠããïŒããã§ãã¯ãã2çªç®ã®ãã£ã«ã¿ãŒã¯ãEvent2ãããã§ãã¯ããŸãã
ã³ã³ããŒãã³ãèšå®ã®ãé¢æ°ããã©ã¡ãŒã¿ãŒã¯ãå ¥åããŒã¿ã®å€æãèšå®ããå€æé¢æ°Fãèšå®ããŸãããã®åŸãéžææ¡ä»¶ã¯FïŒinput_columnïŒ{comparator}å€ã«ãªããŸãã é¢æ°Fã¯ãããŸããã{ã³ã³ãã¬ãŒã¿}ã¯çåŒã§ãå€ã¯ãHelloãworldïŒãã§ãã ãã®å Žåãinput_column ==â HelloãworldïŒâãååŸããŸãã
ã³ã³ããŒãã³ãèšå®ã®ãé¢æ°ããã©ã¡ãŒã¿ãŒã¯ãå ¥åããŒã¿ã®å€æãèšå®ããå€æé¢æ°Fãèšå®ããŸãããã®åŸãéžææ¡ä»¶ã¯FïŒinput_columnïŒ{comparator}å€ã«ãªããŸãã é¢æ°Fã¯ãããŸããã{ã³ã³ãã¬ãŒã¿}ã¯çåŒã§ãå€ã¯ãHelloãworldïŒãã§ãã ãã®å Žåãinput_column ==â HelloãworldïŒâãååŸããŸãã
ãã£ã«ã¿ãŒã®åŸã«tLogRowãã¢ãè¿œå ããŠå®è¡ããããŒã¿ãå ±æãããŠããããšã確èªããŸãã å¯äžã®æ¹æ³ã¯ãtLogRowã®ModeããBasicãã¢ãŒããšã¯ç°ãªããã®ã«èšå®ããããšã§ããããããªããšãããŒã¿ãæ··åãããŸãã
tLogRowã®ä»£ããã«ãCSVãã¡ã€ã«ã«æžã蟌ãããã®tFileOutputDelimitedããããŒãã«ã«æžã蟌ãããã®ããŒã¿ããŒã¹ã³ã³ããŒãã³ããªã©ãä»ã®ããŒã¿åºåã³ã³ããŒãã³ããè¿œå ã§ããŸãã
ããŒã¿ããŒã¹ã®æäœã«ã¯å€ãã®ã³ã³ããŒãã³ãããããŸãã ãããã®å€ãã«ã¯ãããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãèšå®ããããã®èšå®ãã£ãŒã«ãããããŸãã ãã ããç°ãªãã³ã³ããŒãã³ãããããŒã¿ããŒã¹ã«å€ãã¢ã¯ã»ã¹ããå Žåã¯ã次ã®ã¹ããŒã ã䜿çšããã®ãæé©ã§ãã
Connectionã³ã³ããŒãã³ãã¯ãããŒã¿ããŒã¹ã¢ã¯ã»ã¹ãã©ã¡ãŒã¿ãèšå®ããæ¥ç¶ã確ç«ããŸãã Closeã³ã³ããŒãã³ãã¯ããŒã¿ããŒã¹ããåæãããŸãã å³ã§å¯äžã®Commitã³ã³ããŒãã³ããããäžå€®ã®ãããã¯ã§ã¯ãæ°ããæ¥ç¶ã確ç«ããã«ããŒã¿ããŒã¹ã䜿çšã§ããŸãã ãããè¡ãã«ã¯ãã³ã³ããŒãã³ãèšå®ã§ãæ¢åã®æ¥ç¶ã䜿çšããããªãã·ã§ã³ãéžæããå¿ èŠãªæ¥ç¶ã³ã³ããŒãã³ããéžæããŸãã
å¥ã®TOSã¡ã«ããºã ãããã§äœ¿çšãããŸã-ãµããžã§ãã ãµãã¿ã¹ã¯ãäœæãããšãã¿ã¹ã¯ã®äžéšãå®äºããŠããä»ã®éšåãéå§ã§ããŸãã ãã®äŸã§ã¯ãæ¥ç¶ã確ç«ããããŸã§Commitã³ã³ããŒãã³ãã¯éå§ãããŸããã OnSubjobOkæ¥ç¶ã¯ãµãã¿ã¹ã¯éã§äœæãããŸãïŒããªã¬ãŒã¢ã€ãã ã¯ãã³ã³ããŒãã³ãã³ã³ããã¹ãã¡ãã¥ãŒã§å©çšã§ããŸãããã®ã³ã³ããã¹ãå ã«ãã®æ¥ç¶ããããŸãïŒã ãšã©ãŒåŠçã®ããã®ObSubjobErrorãªã©ãä»ã®é¢ä¿ããããŸãã
CSVãã¡ã€ã«ã®äŸã«æ»ããŸãããã
ã¿ã°ãã£ãŒã«ãã¯ãããŒã¿ããŒã¹ãžã®æžã蟌ã¿ã«ã¯ããŸãé©ããŠããŸãã-tag2 = aã 確ãã«ãããŒãšå€ã®ãã¢ãããŒã¿ããŒã¹å ã®ç°ãªããã£ãŒã«ãã«åå²ããå¿ èŠããããŸãã ããã¯ããŸããŸãªæ¹æ³ã§å®è¡ã§ããŸãããtJavaFlexã³ã³ããŒãã³ãã䜿çšããŠå®è¡ããŸãã tJavaFlexã¯ããã®åäœãJavaã§èšè¿°ã§ããã³ã³ããŒãã³ãã§ãã èšå®ã«ã¯3ã€ã®ã»ã¯ã·ã§ã³ããããŸããæåã®ã»ã¯ã·ã§ã³ã¯ããŒã¿åŠçã®éå§åã«å®è¡ããïŒåæåïŒã2çªç®ã®ã»ã¯ã·ã§ã³ã¯ããŒã¿åŠçã«é¢äžãã3çªç®ã®ã»ã¯ã·ã§ã³ã¯ãã¹ãŠã®ããŒã¿ãåŠçãããåŸã«å®è¡ãããŸãã ãŸããä»ã®ã³ã³ããŒãã³ããšåæ§ã«ãåè·¯ãšãã£ã¿ãŒããããŸãã ããŒã¿ã¹ããŒã ããã¿ã°ãã£ãŒã«ããåé€ããããã€ãã®æ°ããã¿ã°ãã£ãŒã«ãtag_nameãštag_valueïŒStringåïŒãè¿œå ããŸãã
次ã«ãã³ã³ããŒãã³ãã®äžå€®ã®ã»ã¯ã·ã§ã³ã§ã
row4.tag_name = ""; row4.tag_value = ""; if(row2.tag.contains("=")) { String[] parts = row2.tag.split("="); row4.tag_name = parts[0]; row4.tag_value = parts[1]; }
ã³ãŒãã¯ç°¡åã§ããããã説æãã䟡å€ãããã®ã¯ãrow4.tag_valueã®åœ¢åŒã®æ§ç¯ã ãã§ãã tag_valueã¯ãäœæãããã£ãŒã«ãã®ååã§ãã ä»ã®ãã£ãŒã«ãã«ãåãæ¹æ³ã§ã¢ã¯ã»ã¹ã§ããŸãã row4ã¯çºä¿¡ã¹ããªãŒã ïŒçä¿¡row2ïŒã®ååã§ãã å€æŽããããšãã§ããŸãã
ãããã£ãŠãã¿ã°ã¯2ã€ã®ãã£ãŒã«ãã«åå²ãããŸãã ãã ããtJavaFlexèšå®ã§[ããŒã¿ã®èªåé ä¿¡]ãã§ãã¯ããã¯ã¹ããªã³ã«ãªã£ãŠããããšã確èªããå¿ èŠããããŸãããã§ãã¯ããã¯ã¹ããªã³ã«ããªããšãä»ã®ãã¹ãŠã®ããŒã¿ãæ¶ããŸãã å®éãè¿œå ã®å€æãè¿œå ããŸããã ä»ã®ãã£ãŒã«ãã¯ååãåãã§ãèªåçã«ã³ããŒãããŸãã
次ã«ãããå°ãè€éã§å ·äœçãª2ã€ã®ããšã«ã€ããŠèª¬æããŸãã
ãŸã ããŒã¿ãããŒã¿ããŒã¹ã«å ¥ããããšããŸãã ãããã£ãŠããã£ãŒã«ããæã€ã€ãã³ãã©ãã«ããããŸãïŒã€ãã³ãåãã€ãã³ãèå¥åãã€ãã³ãæ¥ä»ãã¿ã°ããŒãã«ã®ãšã³ããªãžã®ãªã³ã¯ã ã¿ã°ããŒãã«ã«ã¯ãããŒãšå€ã®2ã€ã®ãã£ãŒã«ãããããŸãã ããŒãšå€ã®ãã¢ãååšããªãå Žåã«ã®ã¿ã¿ã°ããŒãã«ã«è¿œå ããŸãã ãŸããã¿ã°ãšã€ãã³ãããŒãã«ã®éã«ãªã³ã¯ãè¿œå ããŸãã
ããªãã¡ ç§ãã¡ã欲ããïŒ
- ã¿ã°ããŒãã«ã«ãã®ãããªããŒãšå€ã®ãã¢ããããã©ããã確èªãããªãå Žåã¯è¿œå ããŸã
- ã¿ã°ã«äžèŽããããŒã¿ããŒã¹å ã®ã¬ã³ãŒãã®IDãååŸããŸã
- ã¿ã°ããŒãã«ã®ãšã³ããªã®IDãå«ãã€ãã³ãããŒã¿ãã€ãã³ãããŒãã«ã«æžã蟌ã
Postgresã«ãªãå Žåã«ã®ã¿ãšã³ããªãè¿œå ããã«ã¯ããã©ãŒã ã®ãã¶ã€ã³ã䜿çšã§ããŸã
æ¿å ¥
ååšããªãå Žæ
ããã¯ãtPostgresqlRowã³ã³ããŒãã³ãã䜿çšããŠå®è¡ã§ããŸãã ãã®ã³ã³ããŒãã³ãã䜿çšãããšãä»»æã®SQLã¯ãšãªãå®è¡ã§ããŸãã ãã ãããªã¯ãšã¹ãã§ã¯å®éã®ããŒã¿ã眮ãæããå¿ èŠããããŸãã ããã¯ãããšãã°æ¬¡ã®ããã«è¡ãããšãã§ããŸã
String.format(" INSERT INTO tag(tag_name, tag_value) SELECT \'%s\', \'%s\' WHERE NOT EXISTS (SELECT * FROM tag WHERE tag_name = \'%s\' AND tag_value = \'%s\');", input_row.tag_name, input_row.tag_value, input_row.tag_name, input_row.tag_value)
ã¯ãããã©ã¡ãŒã¿ãŒã¯åã2åãªã¹ããããŸãïŒããããJavaã®ç¥èãä¹ãããããããŸããïŒã Javaã³ãŒãã®æåŸã«ã»ãã³ãã³ã¯å¿ èŠãªãããšã«æ³šæããŠãã ããã
ãã®åŸãç°¡åãªã¯ãšãªãå®è¡ããŠãããŒãã«å ã®ã¬ã³ãŒãã®IDãååŸããå¿ èŠããããŸãã
ããããPostgresã®å Žåã¯ãããç°¡åãªæ¹æ³ã§RETURNING IDã䜿çšã§ããŸãã ãã ãããã®ã¡ã«ããºã ã¯ãããŒã¿ãè¿œå ãããå Žåã«ã®ã¿å€ãè¿ããŸãã ãã ãããµãã¯ãšãªã䜿çšãããšããã®å¶éãåé¿ã§ããŸãã ãã®åŸããªã¯ãšã¹ãã¯æ¬¡ã®ããã«å€æãããŸãã
String.format(" WITH T1 AS ( SELECT * FROM tag WHERE tag_name = \'%s\' AND tag_value = \'%s\' ), T2 AS ( INSERT INTO tag(tag_name, tag_value) SELECT \'%s\', \'%s\' WHERE NOT EXISTS (SELECT * FROM T1) RETURNING tag_id ) SELECT tag_id FROM T1 UNION ALL SELECT tag_id FROM T2;", input_row.tag_name, input_row.tag_value, input_row.tag_name, input_row.tag_value)
ãªã¯ãšã¹ããã䟡å€ãåŸãæ¹æ³
ãªã¯ãšã¹ããtPostgresqlRowã³ã³ããŒãã³ãã§å€ãè¿ãå¿
èŠãããå Žåããã¯ãšãªã®ã¬ã³ãŒãã»ããã®äŒæããªãã·ã§ã³ïŒã詳现èšå®ãã¿ãïŒãæå¹ã«ããå¿
èŠããããŸããéä¿¡ã¹ããªãŒã ã§ã¯ãããŒã¿é
ä¿¡ã®ãã£ãŒã«ããšããŠæå®ããå¿
èŠãããObjectåã®ãã£ãŒã«ããå¿
èŠã§ãã ã¬ã³ãŒãã»ããããããŒã¿ãååŸããã«ã¯ãtParseRecordSetã³ã³ããŒãã³ããå¿
èŠã§ãã ãåã®èšå®ã æ¯èŒ åãªã¹ããããŒã¿ãé
ä¿¡ãããã£ãŒã«ããéžæããå¿
èŠããããŸãã 次ã«ããã£ãŒã«ãã®å±æ§ããŒãã«ã«ããªã¯ãšã¹ãã«ãã£ãŠè¿ããããã£ãŒã«ãã®ååãèšè¿°ããŸãã
次ã®ãããªãã®ãåŸãããã¯ãã§ãã
ããªãã¡ ãã¹ãŠã®ãã£ãŒã«ãã¯èªåçã«ç®çã®å€ã«èšå®ãããintåã®æ°ããdbtag_idãã£ãŒã«ãã¯tag_idããŒã䜿çšããŠã¯ãšãªçµæããååŸãããŸãã åãtPostgresqlRowãŸãã¯tProstgresqlOutputã䜿çšããŠãã€ãã³ãããŒãã«ã«ãã¹ãŠãè¿œå ã§ããŸãã
çµæã¯ããããã次ã®ã¹ããŒã ã§ãã
次ã®ãããªãã®ãåŸãããã¯ãã§ãã
ããªãã¡ ãã¹ãŠã®ãã£ãŒã«ãã¯èªåçã«ç®çã®å€ã«èšå®ãããintåã®æ°ããdbtag_idãã£ãŒã«ãã¯tag_idããŒã䜿çšããŠã¯ãšãªçµæããååŸãããŸãã åãtPostgresqlRowãŸãã¯tProstgresqlOutputã䜿çšããŠãã€ãã³ãããŒãã«ã«ãã¹ãŠãè¿œå ã§ããŸãã
çµæã¯ããããã次ã®ã¹ããŒã ã§ãã
å¥ã®èæ ®äºé ã¯ãéããæ§é ãäœæããå¿ èŠãããå Žåã«å€ããŸãã TOSã¯ãåšæçã§ãªãå Žåã§ããéããæ§é ãäœæããããšãèš±å¯ããŸããã å®éã«ã¯ãããŒã¿ã¹ããªãŒã ã¯ããèªäœã§ã©ã€ãã§ãããåæãããŠããããç°ãªãæ°ã®ã¬ã³ãŒããéã¶ããšãã§ããŸãã 確ãã«ãéã«ãŒãã圢æããããšãªãã»ãŒãã€ã§ãå®è¡ã§ããŸãã ãããè¡ãã«ã¯ãã¹ã¬ãããå ±æããŠãã¹ãŠã1ã€ã«ãŸãšããå¿ èŠã¯ãããŸããã ããããæ¬åœã«ãããå Žåã¯ãéããæ§é ã®äœæã«é¢ããå¶éããã€ãã¹ã§ããŸãã tHashInputããã³tHashOutputã³ã³ããŒãã³ããå¿ èŠã«ãªããŸãã
tHashInputããã³tHashOutputãèŠã€ããæ¹æ³
ããã©ã«ãã§ã¯ããããã¯ã³ã³ããŒãã³ãããã«ã«è¡šç€ºãããªããããæåã«è¿œå ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã[ãã¡ã€ã«]ã¡ãã¥ãŒ-> [ãããžã§ã¯ãããããã£ã®ç·šé]-> [ãã¶ã€ããŒ]-> [ãã¬ããèšå®]ã«ç§»åãããã¯ãã«ã«ã¿ãã§ã³ã³ããŒãã³ããèŠã€ããŠã¯ãŒãã³ã°ã»ããã«è¿œå ããŸãã
ãããã®ã³ã³ããŒãã³ãã䜿çšãããšãã¹ããªãŒã ãã¡ã¢ãªã«ä¿åããŠããã¢ã¯ã»ã¹ã§ããŸãã ãã¡ãããäžæãã¡ã€ã«ã䜿çšããããšãã§ããŸãããããã·ã¥ã¯ããããããé«éã§ãïŒååãªRAMãããå ŽåïŒã
ä¿åããtHashOutputã³ã³ããŒãã³ããšå ¥åã¹ããªãŒã ãè¿œå ããŸãã ã³ã³ããŒãã³ãã¯ãç¬ç«ããŠåäœããããã«ããŸãã¯å¥ã®tHashOutputã³ã³ããŒãã³ãã«ããŒã¿ãè¿œå ããããã«æ§æã§ããŸãã ãã®å Žåãã³ã³ããŒãã³ãã¯sqlã®unionã®ããã«æ©èœããŸãã ããŒã¿ã¯1ã€ã®å ±éã¹ããªãŒã ã«èšé²ããããããããŒãžãå®è¡ããæ°ãããµãã¿ã¹ã¯ãäœæããå¿ èŠããããŸãã OnSubjobOkãªã³ã¯ãå¿ããã«è¿œå ããŠãã ããã
åã ã«åäœããã¹ã¬ããããšã«ãtHashInputã³ã³ããŒãã³ããäœæããå¿ èŠããããŸãã ãã®ã³ã³ããŒãã³ãã«ã¯æ¬ ç¹ããããŸã-ããŒã¿ãååŸããtHashOutputã³ã³ããŒãã³ããæå®ããåŸã§ããã¹ããŒã ã¯èªåçã«ããŒããããŸããã 次ã«ããã¹ãŠã®tHashInputãtMapã䜿çšããŠçµåããå¿ èŠããããŸãã MainãšããŠããŒã¯ãããã®ã¯1ã€ã®ã¹ããªãŒã ã®ã¿ã§ãæ®ãã®çä¿¡ã¹ããªãŒã ã¯ãããä»ããŠåæãããçºä¿¡ãæ®ãã®çä¿¡ã¹ããªãŒã ã¯Lookupã«ãªããŸãã ããã«ãã¹ã¬ããéã®æ¥ç¶ãèšå®ããå¿ èŠããããŸããèšå®ããªããšãã¯ãã¹ãžã§ã€ã³ãååŸãããŸãã
ããããŒã®å·ŠåŽã«å€ãã®ã¹ããªãŒã ããããšããäºå®ã«ããããããã1ã€ã®å ¥åã¹ããªãŒã ãããããããã³ã°ã«ä»»æã®ãããŒã®ä»»æã®ãã£ãŒã«ãã䜿çšãããšä»®å®ã§ããŸãã
æåŸãŸã§èªãã§ããããã¹ãŠã®äººã«æè¬ããŸãã