Share
Embed
Transcript
21 slides
-
©2020 Wantedly, Inc. ΤϯδχΞ #*νʔϜ ΤϯδχΞ ՄࢹԽπʔϧ σʔλͷղऍ͕ζϨΔ ͍͍ͪͪΤϯδχΞʹਘͶΔ͔͠ͳ͍ ΫΤϦ͕࠶ར༻Ͱ͖ͳ͍
ίϐϖͩΒ͚ʹ ҙਤͤͣյ͢ ා͍ͷͰϩάपΓ͍͡Βͳ͍ -
©2020 Wantedly, Inc. ΤϯδχΞ #*νʔϜ ΤϯδχΞ ՄࢹԽπʔϧ σʔλͷղऍ͕ζϨΔ ͍͍ͪͪΤϯδχΞʹਘͶΔ͔͠ͳ͍ ΫΤϦ͕࠶ར༻Ͱ͖ͳ͍
ίϐϖͩΒ͚ʹ ҙਤͤͣյ͢ ා͍ͷͰϩάपΓ͍͡Βͳ͍ w ಉҰςʔϒϧʹผछͷ σʔλ͕͍ࠞͬͯͨ͡ w ҉ͩΒ͚ -
©2020 Wantedly, Inc. WITH people_posts AS ( SELECT ... FROM
... INNER JOIN ... WHERE deleted_at IS NOT NULL AND ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ) SELECT COUNT(*) OVER ... AS daily_count, IF(week = day, COUNT(*) OVER ..., NULL) AS weekly_count, IF(month = day, COUNT(*) OVER ..., NULL) AS monthly_count, COUNT(DISTINCT user_id) OVER ... AS daily_users, IF(week = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS weekly_users, IF(month = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS monthly_users FROM people_posts INNER JOIN ... -
©2020 Wantedly, Inc. WITH people_posts AS ( SELECT ... FROM
... INNER JOIN ... WHERE deleted_at IS NOT NULL AND ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ) SELECT COUNT(*) OVER ... AS daily_count, IF(week = day, COUNT(*) OVER ..., NULL) AS weekly_count, IF(month = day, COUNT(*) OVER ..., NULL) AS monthly_count, COUNT(DISTINCT user_id) OVER ... AS daily_users, IF(week = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS weekly_users, IF(month = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS monthly_users FROM people_posts INNER JOIN ... w ຊʹϢʔβͷߘʹߜΓࠐΊ͍ͯ Δ͔Θ͔Βͳ͍ w ίϐϖࠈ w ͜ͷ໊લʹΑΓࣾͰղऍ͕όϥ όϥʹͳͬͯ͠·͏ w ྫ w Ϣʔβ͕ϑΟʔυʹߘͨ͠هࣄ w QFPQMFʹදࣔ͞ΕΔهࣄ -
©2020 Wantedly, Inc. WITH people_posts AS ( SELECT ... FROM
... INNER JOIN ... WHERE deleted_at IS NOT NULL AND ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ) SELECT COUNT(*) OVER ... AS daily_count, IF(week = day, COUNT(*) OVER ..., NULL) AS weekly_count, IF(month = day, COUNT(*) OVER ..., NULL) AS monthly_count, COUNT(DISTINCT user_id) OVER ... AS daily_users, IF(week = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS weekly_users, IF(month = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS monthly_users FROM people_posts INNER JOIN ... w ຊʹϢʔβͷߘʹߜΓࠐΊ͍ͯ Δ͔Θ͔Βͳ͍ w ίϐϖࠈ w ͜ͷ໊લʹΑΓࣾͰղऍ͕όϥ όϥʹͳͬͯ͠·͏ w ྫ w Ϣʔβ͕ϑΟʔυʹߘͨ͠هࣄ w QFPQMFʹදࣔ͞ΕΔهࣄ ϨϏϡʔΛཔΊΔΈ WJFXͰΫΤϦͷ࠶ར༻ੑΛߴΊΔ ΫΤϦ໊ΛࣾͰҰҙʹͳΔΑ͏ʹ -
©2020 Wantedly, Inc. WITH people_posts AS ( SELECT ... FROM
... INNER JOIN ... WHERE deleted_at IS NOT NULL AND ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ) SELECT COUNT(*) OVER ... AS daily_count, IF(week = day, COUNT(*) OVER ..., NULL) AS weekly_count, IF(month = day, COUNT(*) OVER ..., NULL) AS monthly_count, COUNT(DISTINCT user_id) OVER ... AS daily_users, IF(week = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS weekly_users, IF(month = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS monthly_users FROM people_posts INNER JOIN ... #*πʔϧͷதͷΈʹ͜ͷΫΤϦ ͕͋ΔͷͰɺ w σʔλͷมߋ͕ࢥΘͳ͍ͱ͜ Ζ·ͰӨڹͯ͠͠·͏ w σʔλʹؔ͢Δ͕ࣝ·Β ͳ͍ -
©2020 Wantedly, Inc. WITH people_posts AS ( SELECT ... FROM
... INNER JOIN ... WHERE deleted_at IS NOT NULL AND ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ), ... AS ( SELECT ... FROM ... INNER JOIN ... WHERE ... ) SELECT COUNT(*) OVER ... AS daily_count, IF(week = day, COUNT(*) OVER ..., NULL) AS weekly_count, IF(month = day, COUNT(*) OVER ..., NULL) AS monthly_count, COUNT(DISTINCT user_id) OVER ... AS daily_users, IF(week = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS weekly_users, IF(month = day, COUNT(DISTINCT user_id) OVER ..., NULL) AS monthly_users FROM people_posts INNER JOIN ... #*πʔϧͷதͷΈʹ͜ͷΫΤϦ ͕͋ΔͷͰɺ w σʔλͷมߋ͕ࢥΘͳ͍ͱ͜ Ζ·ͰӨڹͯ͠͠·͏ w σʔλʹؔ͢Δ͕ࣝ·Β ͳ͍ ΫΤϦ͕ݕࡧҰཡͰ͖Δ ΫΤϦΛࢀর͢Δ͚ͩʹ͢Δ -
©2020 Wantedly, Inc. ࣍Λຬͨ͢πʔϧ͕ඞཁ w ϨϏϡʔΛཔΊΔΈ w ΫΤϦͷ࠶ར༻ੑΛߴΊΔ w ΫΤϦ໊ΛࣾͰҰҙʹͳΔΑ͏ʹ͢Δ
w #*πʔϧ͔ΒΫΤϦΛࢀর͢Δ w ΫΤϦ͕ҰཡݕࡧͰ͖Δ -
©2020 Wantedly, Inc. ࣍Λຬͨ͢πʔϧ͕ඞཁ w ϨϏϡʔΛཔΊΔΈ w ΫΤϦͷ࠶ར༻ੑΛߴΊΔ w ΫΤϦ໊ΛࣾͰҰҙʹͳΔΑ͏ʹ͢Δ
w #*πʔϧ͔ΒΫΤϦΛࢀর͢Δ w ΫΤϦ͕ҰཡݕࡧͰ͖Δ WJFXͰཧ -
©2020 Wantedly, Inc. ࣍Λຬͨ͢πʔϧ͕ඞཁ w ϨϏϡʔΛཔΊΔΈ w ΫΤϦͷ࠶ར༻ੑΛߴΊΔ w ΫΤϦ໊ΛࣾͰҰҙʹͳΔΑ͏ʹ͢Δ
w #*πʔϧ͔ΒΫΤϦΛࢀর͢Δ w ΫΤϦ͕ҰཡݕࡧͰ͖Δ (JU)VCͰཧ -
©2020 Wantedly, Inc. 1FSTJTUFOU6%' ͦͷଞศརͳػೳ CREATE FUNCTION dataset.test_udf(x FLOAT64,
y FLOAT64) RETURNS FLOAT64 LANGUAGE js AS """ return x*y; """; https://cloud.google.com/bigquery/docs/reference/standard-sql/user-defined-functions?hl=ja VEGEBUBTFUUFTU@VEGTRM w WJFXͰ6%'͕͑ͳ͍ͨΊ w ࣾͷศར6%'ΛΊΔͨΊ -
©2020 Wantedly, Inc. EFTDSJQUJPOMBCFM ͦͷଞศརͳػೳ metadata: description: | ࣾशձ༻ͷΫΤϦɻBIπʔϧ͔Βࢀর͞Ε͍ͯͳ͍ɻ
label: foo: bar VEGEBUBTFUFYBNQMF@WJFXZNM w ରԠ͢ΔWJFXͷEFTDSJQUJPOMBCFMʹө͞ΕΔ w %BUB$BUBMPHͳͲͰݕࡧՄೳʹ -
©2020 Wantedly, Inc. UFNQMBUF ͦͷଞศརͳػೳ CREATE TEMP FUNCTION render_query(tablename
STRING) RETURNS STRING LANGUAGE js AS """ return ` SELECT COUNT(1) FROM ${tablename} `; """; SELECT CONCAT(name, "_count") AS name, render_query(tablename) AS query, FROM UNNEST(ARRAY<STRUCT<name string, tablename string>>[ STRUCT( "311_request" AS name, """`bigquery-public-data.austin_311.311_request`""" AS tablename ) ]) SELECT COUNT(1) FROM `bigquery-public-data.austin_311.311_request` UFNQMBUFEBUBTFUDPVOUTTRM FYBNQMFEBUBTFU@SFRVFTU@DPVOUTRM