case-kの備忘録

日々の備忘録です。最近はGCPやデータ分析系のことを呟きます

Dataflowパイプライン処理の備忘録:Python

Dataflowで使うパイプライン処理の備忘録です。随時更新できればと思います。 options udf branch group by Filter beam.apache.org options # -*- coding: utf-8 -*- import apache_beam as beam # プロジェクトID PROJECTID = 'project id' # オプション設…

Dataflowカスタムオプションの追加方法:Python

Dataflowテンプレートの実行でパラメータ受け取ります。Cloud Functonsでファイル名を取得し、取得したファイル名をDataflowテンプレート実行時に渡します。本記事はテンプレート側のパラメータの受け取り方法を記事にしたものです。テンプレートの実行方法…

Cloud Schedulerのパイプライン制御における活用用途について

Cloud Schedulerとは どのような時に使うか? Cloud Composerとの違い パイプライン制御におけるトリガーとしての役割 運用フローを考慮したトリガー選定 Cloud Schedulerとは GCPが管理するフルマネージドでサーバレスなクーロンサービスです。 どのような…

Cloud Composerの活用事例と料金体系について

Cloud Composerの活用事例と料金体系について調べてみました。 Cloud Compoer とは? Cloud Compoer活用事例 メルペイ メルカリ DeNA JapanTaxi エウレカ リブセンス SmartNews BrainPad 料金体系について 所感 Cloud Compoer とは? Cloud ComposerはGCPが…

Dataflowテンプレート実行方法:Python

GAEなどでDataflowのテンプレートの実行方法です。パラメータは以下のようにして渡します "parameters": { "input": "gs://{}/sample2.csv".format(PROJECTID), "output": "gs://{}/output/sample2_2.csv".format(PROJECTID), }, !pip install google-api-py…

Gitチートシート

Git

このチートシート作った方は天才 qiita.com

Cloud FunctionsでDataflowテンプレートをキックさせる方法:Python

Cloud FunctionsでGCSのバケットに置かれたファイルを検知し、Dataflowのテンプレートをキックします。パラメータとしてCloud Functionsでファイル名を取得し、Dataflowのテンプレートに引数として渡します。GCSから加工しGBQに取り込むケースなどに使います…

BigQueryマスタ更新のベストプラクティスと見解

こちらの記事でベストプラクティスは以下と紹介されており、実運用を考慮した際、現実的には「Data Loadingを利用して追加」する方法が良いようです。 この方法は1テーブルにレコードを追加し、最新のTIME STAMPを参照するVIEWテーブルを作り参照させる方法…

Dataflowテンプレート作成方法

Pythonベースで記述したDataflowのコードをテンプレート化し、実行してみます。テンプレートを作成するためには以下のコードを追記するだけです。コードを実行するとGCS内にテンプレートが作られるので、作成したテンプレートを実行してみます。 gcloud_opti…

DataflowでPython3系を使って良いのか検討してみた

DataflowでPython3系を使って良さそうか調べてみました。 Python3系を使いたい理由 DataflowのPython3系のサポート状況について Apach Beamのissueについて 動作確認 結論(個人的な) Python3系を使いたい理由 DataflowはETLツールなのでデータ加工が主な役割…

Cloud Functionsで検知したファイルをBigQueryに書き込む

Cloud FunctionsでバケットにアップしたファイルをBigQueryに書き込む処理をします。 Cloud Functionsとは 制限事項 Cloud Functionsを試す 事前準備 動作確認 Cloud Functionsとは イベントを検知し処理を実行するトリガーの役割があります。サーバレスでイ…

Googleが提供するDataflowテンプレートを使う方法

Googleが事前に用意してくれてるDataFlowのテンプレートを使い、GCS上に配置したテキストファイルをDataflowで加工し、BigQueryのテーブルに書き込みます。 Dataflowを実行するための選択肢 Googleの提供するテンプレートを使う Dataflowを実行するための選…

DataprocでJupyterを使ったPySpark実行環境を作る

DataprocのJupyter環境を構築します。個人的にはDatalabよりJupyterの方が使いやすい印象があります。(Datalabを使いこなせてないのはありますがライブラリのインストール方法やDLなど。GCPとの連携もJupyterでもできるのでいいかなって思ってます)。 PySpar…

OAuth2.0のGCPでのシーケンスや推奨方法について

OAuth2.0のGCPでのシーケンスや推奨方法を調べてみました。OAuth2.0の簡単な概要からGCPで採用している認証方法とOAuth2.0で許可証を発行する場合のシーケンスとサンプルとなります。 OAuth2.0とは? GCPで採用している認証処理 GCPのOAuth2.0のシーケンス …

Selenium+Chrome Driverで日経平均株価をスクレイピング

株価のアプリを作ろうかと考えてます。日経株価をBeautiful Soupでスクレイピングしようと思ったのですが、日経平均株価のサイトは年月日を指定することで数値が可変するサイトでしたのでSerenimでスクレイピングしました。Serenimはブラウザの操作が可能な…

DataprocでPySparkの分散並列処理を行う方法

Dataprocの備忘録です。DataprocでGCSに配置したcsvファイルをDataFrameで読み込み分散並列処理する記事です。 簡単にDataprocを紹介 事前準備 PySparkを実行 所感 簡単にDataprocを紹介 DataprocはGCP上でSparkやHadoopを実行できる環境を提供します。今回…

Jupyter NotebookでBigQueryを使う方法

JupyterからBigQueryを使うことがよくあるので備忘録として残しておきます。 PythonクライアントライブラリをインストールすることでJupyterから実行できます。 # auth gcloud auth application-default login # install python client pip install --upgrad…

Bigtableの特性とスキーマ設計について

Bigtableについて調べてみました。 Bigtableとは 他のDBと比較 Bigtableのアーキテクチャ スキーマ設計 KEYの作り方 カラムファミリー 所感 Bigtableとは GCPプロダクトのNoSQLデータベースで大規模データをミリセックレベルの低レイテンシーで処理したい場…

Dataflowを検証「Python2系と3系」

GCPのサーバレスETLツールであるDataflowの検証をしてみました。前に使った時はPython2系しか使えなかったんですが3系のサポートも始めたらしいので期待です。 Dataflowとは Python 2系で実行 Python 3系で実行 Dataflowとは DataFlowはGCPのETLツールでデ…

BigQueryのStandard SQLで四分位計算

GBQのStandard SQLでの四分位計算方法を備忘録として残しておきます。 これまで中央値などの計算はGBQのレガシーSQLを使っていたのですが、制限等何かと不便でしたので調べてみました。 SELECT day , min, percentiles[offset(25)] AS per_25, percentiles[o…

BQコマンドデータ取得

備忘録です。BigQueryの集計結果をサーバで扱いたい場合、以下の方法が考えられます。gsutilだと一度GCSにデータを保存する必要があるので手っ取り早く手元にデータを落としたい場合、BQコマンドは便利です。データサイズが大きい場合や取得に時間がかかるの…

分析基盤をPostgreSQLからBigQueryに移行させた時の知見

PostgreSQLベースのBIツールの参照DBをBigQueryに移行したことで、 パフォーマンスが大きく改善(30分以上 -> 10秒)したので、その時の知見をメモとして残しておきたいと思います。 経緯 BigQueryの選定理由 1. 現行がRDBベース 2. 集計結果のデータサイズが…

入門記事:GCE (Google Compute Engine) で作るJupyter分析環境

Google Compute Engine(GCE)にJupyterで必要最低限の分析環境を作る入門者向けの記事です。 インスタンス構築(GCE) IP制限の設定 Dockerインストール Jupyter環境構築(Docker) Jupyter環境構築(Dockerを使わない) インスタンス構築(GCE) GCPコンソール画面の…

Kaggle備忘録 地震コンペ

Kaggleの地震コンペに参戦しました。結果は銅メダル圏内のPublic順位346位からPrivate順位885位落ち、メダルは取れませんでした。orz..... (Publicで銅メダル圏に入った時はテンション上がりました。はい。) ソリューションでもなんでもないんですが、備忘録…

DockerとKubernetes良記事

Dockerを理解する上で個人的に参考にさせて頂いた記事を自分用にまとめました。いい記事があれば随時追記していきたいと思ってます。あとこの辺勉強しないと。 Docker 概要の理解であればこれだけ見ればいい気がします。とってもわかりやすいです。 y-ohgi.c…

BigQueryでカンマ区切りのデータの分割方法

BIgQueryでカンマ区切りのデータを分割する方法をご紹介します。データはここに置いておきます。 github.comサンプルの中身はカンマ区切りのデータとなっています。 SQLを実行して、以下のようにカンマ区切りのデータ項目を分割することが本記事の目的です。…

Pythonで多変量解析、3変数以上の偏相関係数を算出してみた

この記事では説明変数3つ以上の偏相関係数算出方法をPythonで行います。実際のコードはこちらにあげておきます。 github.com 偏相関係数とは 偏相関係数とは変数間の交互作用を取り除いた純粋な相関係数と言えます。 多変量である場合、個々の説明変数が互い…

BigQueryでサイズの大きいデータをGCSに出力する方法

データ分析する場合BigQueryで集計し、集計結果をGCSに出力、Jupyterで分析することが多いかと思います。 集計結果が大きいとそのままCloud Storageに出力することはできません。集計結果をBigQueryのテーブルに出力し、Cloud Storageへエクスポートを選ぶと…

BigQueryで標準時(UTC・EST)をJSTに変換してみた

時系列データでタイムスタンプがJSTでないことはまあまああるかと思います。BigQueryでJSTに変換する方法を記事にしました。 UTC - > JSTとEST -> JST変換をします。データは以下の形式ならそのままクエリ実行できると思います。 「2018-05-12 21:02:20」 Bi…

GCSのファイルをDataFrameで扱う方法

JupyterでGCSにあるファイルを読み込み、DataFrameとして扱う方法を紹介します。サーバにいちいちデータを落としたくない場合やディスク容量がない場合に使えるかもしれません。いつも通り完全に備忘録です。 #ライブラリ $ pip install google-cloud-storag…