ããã«ã¡ã¯ïŒã¿ã€ããŒã§ããŒã¿ã¢ããªã¹ããããŠããkantaãšç³ããŸãã æ®æ®µã¯ããŒã±ãã£ã³ã°ã®çæ§ãšCMæœçãCRMé¢é£ã®åæãæ
åœããããä»éšçœ²åãã®è¬ç¿äŒãäŒç»ãããããŠãããŸãã11æããå幎ã»ã©è²äŒãååŸäºå®ã®ãããè²äŒåæåŸã®ä»äºïŒïŒïŒãšããŠåœããã°ã®å·çãæ
åœããããŸãã ããŠãä»å㯠ãBigQuery + Looker Studioã§tæ€å®ãã話ã ãšé¡ããŸããŠããã®æ¹æ³ãã玹ä»ã§ããã°ãšæããŸãã ãªã BigQuery + Looker Studioã§tæ€å®ããããã®ãïŒ BigQuery + Looker Studio ã§tæ€å®ããæé 1. UDFã®äœæ 1-1. JavaScriptã©ã€ãã©ãªãjStatãã®ããŠã³ããŒã 1-2. ä»»æã®GCSãã±ããã«jstat.jsãã¢ããããŒã 1-3. på€ãç®åºããUDFã®äœæ 1-4. tæ€å®ã宿œããUDFã®äœæ 2. ã¯ãšãªã®äœæ 3. Looker Studioã§å¯èŠå 3-1. Looker Studioã®ããŒã¿ãœãŒã¹ã§BigQueryãéžæ 3-2. å
ã»ã©äœæããã«ã¹ã¿ã ã¯ãšãªãèšè¿° 3-3. èŠãç®ãæŽããŠå®æïŒ BigQuery + Looker Studioã§tæ€å®ããææ³ Weâre Hiring! ãªã BigQuery + Looker Studioã§tæ€å®ããããã®ãïŒ ã¿ã€ããŒã§ã¯ãBIããŒã«ãšããŠLooker Studioã䜿ã£ãŠããŸãããåæã®äžã§ããã€ãæ©èœã®äžè¶³ãæããç¹ããããŸãããã®äžã€ããä»åã®ã¿ã€ãã«ã«ããªã£ãŠãã tæ€å® ã§ããtæ€å®ã¯ãã®æœçã®å¹æãææã§ãã£ãããææã§ãªãã£ãããæšå®ããããã«éåžžã«éèŠãªèŠçŽ ã§ããPythonãRãªã©ã®ããã°ã©ãã³ã°èšèªã ãã§ãªããExcelãã¹ãã¬ããã·ãŒãããã³Lookerã§ã宿œã§ããŸãã ããããªãããLooker Studioã§ã¯tæ€å®ããµããŒããããŠããããä»ã®ããŒã«ã§åºåããæ€å®çµæãã€ã³ããŒãããå¿
èŠããããŸããïŒ2024幎10æçŸåšïŒ ãããªããšãäžã€ã®æ€å®ã宿œããããã«ä»¥äžã®äžã€ã管çããªããã°ãªããŸããã ãããã®ç®¡çå·¥æ°ãå°ãã§ãåæžããããã«ã以äžã®ãããªæ§æã§Looker Studioäžã«tæ€å®çµæã衚瀺ããããšæããŸãã BigQuery + Looker Studio ã§tæ€å®ããæé ããã§ã¯ããã®æé ã«ã€ããŠã玹ä»ããŸãã UDFã®å®è£
ã«ã€ããŸããŠã¯ã以äžã®ããã°ãåèã«ãããŠããã ããŸããã BigQueryã§å§ããtæ€å® - Re:ãŒãããå§ããMLçæŽ» 1. UDFã®äœæ BigQueryã«ã¯ ãŠãŒã¶ãŒå®çŸ©é¢æ°ïŒUDFïŒ ãšããæ©èœããããSQLãŸãã¯JavaScriptã§é¢æ°ãäœæã§ããŸãããã®æ©èœãå©çšããŠãJavaScriptã§tæ€å®ã®UDFãäœæããŸãã 1-1. JavaScriptã©ã€ãã©ãªãjStatãã®ããŠã³ããŒã GitHubãªããžããªãã jstat.js ãããŠã³ããŒãããŸãã https://github.com/jstat/jstat/blob/1.9.6/dist/jstat.js 1-2. ä»»æã®GCSãã±ããã«jstat.jsãã¢ããããŒã GCSãã±ããã«ã¢ããããŒããããã±ããåãšãã¡ã€ã«ãã¹ãæ§ããŠãã ããã ããã§ã¯ã YOUR_BUCKET é
äžã« libraries/jstat.js ãšããŠäœæãããã®ãèšèŒããŸãã 1-3. på€ãç®åºããUDFã®äœæ 以äžã®ã¯ãšãªãBigQueryã§å®è¡ããŸãã YOUR_PROJECT ã» YOUR_DATASET ã¯äºåã«äœæããŠãããŠãã ããã CREATE OR REPLACE FUNCTION `YOUR_PROJECT.YOUR_DATASET.studentt_cdf`(t FLOAT64, dof FLOAT64) RETURNS FLOAT64 LANGUAGE js OPTIONS ( library= " gs://YOUR_BUCKET/libraries/jstat.js " ) AS """ // ã¹ãã¥ãŒãã³ãã®TååžãçšããŠãäžããããtçµ±èšéãšèªç±åºŠã«å¯Ÿããåæ¹åã®på€ãèšç® return jStat.studentt.cdf(-Math.abs(t), dof) *2 """ 1-4. tæ€å®ã宿œããUDFã®äœæ 1-3ã§äœæããUDFãå©çšããtæ€å®ã宿œããUDFãäœæããŸãã åæ§ã«ä»¥äžã®ã¯ãšãªãå®è¡ããŠãã ããã CREATE OR REPLACE FUNCTION `YOUR_PROJECT.YOUR_DATASET.ttest_ind`(data ARRAY<FLOAT64>, data2 ARRAY<FLOAT64>) AS (( WITH dataset1 AS ( SELECT d AS A FROM UNNEST(data) as d ) ,dataset2 AS ( SELECT d AS B FROM UNNEST(data2) as d ) , mean AS ( SELECT AVG (A) AS ma, AVG (B) AS mb FROM dataset1, dataset2 ) , lena AS ( SELECT COUNT (A) AS len_a FROM dataset1 ) , lenb AS ( SELECT COUNT (B) AS len_b FROM dataset2 ) , Ama AS ( SELECT A, ma, A - ma AS A_ma, FROM dataset1, mean ) , bmb AS ( SELECT B, mb, B - mb AS B_mb, FROM dataset2, mean ) , pow_Ama AS ( SELECT SUM (A_ma * A_ma) AS A_ma_2 FROM Ama ) , pow_Bmb AS ( SELECT SUM (B_mb * B_mb) AS B_mb_2 FROM bmb ) , S2 AS ( SELECT (A_ma_2 + B_mb_2) / (len_a + len_b - 2 ) AS s_2 FROM pow_Ama, pow_Bmb, lena, lenb ) , t AS ( SELECT len_a, len_b, (ma - mb) / SQRT ((s_2/len_a) + (s_2/len_b)) AS t_value FROM mean, S2, lena, lenb ) SELECT `YOUR_PROJECT.YOUR_DATASET.studentt_cdf`(t_value, len_a + len_b -2 ) AS p_value FROM t )) 2. ã¯ãšãªã®äœæ 以äžã®ã¯ãšãªãå®è¡ããpå€ãåŸãããšãã§ããŸãã å®éã«äœ¿çšãããšãã¯åã°ã«ãŒãã®æ°å€ã ARRAY_AGG ã§é
åã«ããŠæ±ãããšãå€ãã§ãã WITH test_data AS ( SELECT [ 0.0 , 5.0 , 29.0 , 3.0 , 4.0 , 32.5 , 46.3 ] AS A, [ 9.0 , 4.0 , 5.0 , 6.0 , 4.0 , 2.0 , 3.0 , 1.0 , 2.0 , 4.0 ] AS B ) SELECT `YOUR_PROJECT.YOUR_DATASET.ttest_ind`(A, B) AS p_value FROM test_data 3. Looker Studioã§å¯èŠå 3-1. Looker Studioã®ããŒã¿ãœãŒã¹ã§BigQueryãéžæ 3-2. å
ã»ã©äœæããã«ã¹ã¿ã ã¯ãšãªãèšè¿° å®çŸ©ããUDFã¯Looker Studioãããå®è¡ã§ããŸãã 3-3. èŠãç®ãæŽããŠå®æïŒ 詳现㯠å
¬åŒããã¥ã¡ã³ã ãã確èªãã ããã æé ã¯ä»¥äžãšãªããŸãã BigQuery + Looker Studioã§tæ€å®ããææ³ ãããŸã§ãä»ãåãããã ãããããšãããããŸãããä»åã®æå€§ã®ã¡ãªããã¯ããã§ã«è¿°ã¹ãããã«ã管çãã¹ãããŒã«ãæžãããç¹ã«ãããŸãã ãã®äžæ¹ã§ãå®éã®ããŒã¿ã ãšã¯ãšãªãåé·ã«ãªããã¬ãã¥ãŒãã¡ã³ããã³ã¹ããã¥ãããªã£ãŠããŸãå ŽåããããŸãã ãŸããããããæ€å®ãšBIããŒã«ã«ããå¯èŠåã¯åããŠè¡ãã¹ããšããèãæ¹ããããšæããå®è£
ããŠã¿ããã®ã®çšéã¯éããããšããå°è±¡ã§ãã ãããŸã§éžæè¢ã®äžã€ãšããŠãåæã®èŠä»¶ãç°å¢ã«åãããéžæãå¿
èŠã§ããã Weâre Hiring! ç§ãã¡ã¯ããšãã«åãã¡ã³ããŒãåéããŠããŸãïŒïŒ ã«ãžã¥ã¢ã«é¢è« ãè¡ã£ãŠããŸãã®ã§ãå°ãã§ãèå³ããããŸããããæ°è»œã«ãé£çµ¡ãã ããã