case-kの備忘録

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

Google Cloud 認定資格 Professional Data Engineerに合格できたので、勉強方法など書いてみました

GCP

Google Cloud認定試験のProfessional Data Engineerに合格したので勉強方法など共有できればと思います。 試験概要 勉強方法について 試験の印象 認定証 所感 試験概要 Google Cloud認定試験の一つでビックデータまわりの知識を問われます。試験の概要はこち…

Dataflowが解決するストリーミング処理の課題と基盤構築で考慮すること

Dataflowが解決するストリーミング処理の課題と基盤を作る上で考慮すべき点をいくつか資料を参考に備忘録もかねて整理してみました。 ストリーミング処理の概要 ストリーミング処理とは バッチ処理との違い ストリーミング処理の課題 データ量と変動性 遅延…

JavaScript / 配列に含まれるJSONを文字列変換しSQLで使う

配列ないのJSONをパースし文字列に変換します。変換させた文字列はSQLのWhere句で使ったりします。 // json object in array object const jsonList = [ {'key':1}, {'key':2}, {'key':3} ] // convert from json object to array object const valueLsit = …

Cloud Pub/Subの概要とPythonでの実践

Cloud Pub/Subの概要とPythonでの使い方を記事にしました。簡単な概要と、Python Clientを使いトピック・サブスクリプションの作成からメッセージ送信・確認まで行います。 Code Cloud Pub/Subの概要 Cloud Pub/Subとは メッセージ配信法式 Pub/SubとDataflo…

Kaggle APIキーでコンペのデータを取得する方法

Kaggle APIキーでコンペのデータを取得します。備忘録です。 $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ sudo python get-pip.py $ sudo pip install kaggle KaggleアカウントのプロフィールからAPIキーを作ります。 kaggleコマンドをイ…

BigQueryのウィンドウ処理

BigQueryウィンドウ処理の備忘録です。 Dataset RANK() LAG/LEAD ROW_NUMBER() Dataset console.cloud.google.com RANK() ベンダーごとの旅客数が多いレコード順にランクを付与します。 SELECT vendor_id, passenger_count, RANK() OVER (PARTITION BY vendo…

Python Client GBQ & GCS

Code library Read From GBQ To Local Upload From Local To GCS Read From GCS Load From GCS To GBQ Code # python_client_gbq_gcs.py github.com library !gcloud auth application-default login !pip install --upgrade google-cloud-bigquery !pip ins…

Dataflowが得意なこと、苦手なこと

Dataflowが得意なこと、苦手なことを考えてみました。 得意なこと バッチ/ストリーミング処理(特にストリーミング処理) サイズの大きいデータを扱うこと サーバ費用を抑えること 苦手なこと 逐次処理 複雑なパイプライン制御(役割が異なる) 得意なこと バッ…

AutoMLでDSの役割がどう変わりそうなのか調べてみた

著名な方の意見を参考にAutoMLでDSの役割がどう変わりそうなのか調べてみました。 AutoMLとは 実施手順 STEP 1 STEP 2 STEP 3 メリット 推定精度が高い 簡単でGCP上で完結する 簡単な分析も可能 デメリット 推定精度が安定しない 費用が高く学習頻度が多い場…

Dataflow Google BigQuery I/O connector:Python

Dataflowを使ってBigQueryからBigQueryに書き込む処理とCloud StorageからBigQueryに書き込む処理をします。 Code options GBQ to GBQ GCS to GBQ beam.apache.org Code github.com options # -*- coding: utf-8 -*- import apache_beam as beam from apache…

Cloud Composerを使いDataflowのパイプライン制御をする方法

Cloud ComposerでDataflowテンプレートを順次キックしていく逐次処理を行います。順番に処理が行われたことを確認するために前のDataflowのテンプレート実行し作られたファイルを参照する処理にしました。 code Composer環境を作る Dataflowのテンプレートを…

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テンプレートでカスタムパラメータを追加します。パラメータを静的に定義する方法とテンプレート実行時に動的にパラメータを指定する方法を紹介します。gclodコマンドで実行しますが、Cloud Functonsからテンプレートをキックする方法は以下の記事を…

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のテンプレートの実行方法です。パラメータは以下のようにして渡します code Dataflowのテンプレートの実行 code github.com Dataflowのテンプレートの実行 "parameters": { "input": "gs://{}/sample2.csv".format(PROJECTID), "output": …

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に書き込む処理をします。 code Cloud Functionsとは 制限事項 Cloud Functionsを試す 事前準備 動作確認 code github.com Cloud Functionsとは イベントを検知し処理を実行するトリガーの役割があ…

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

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

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…