ZOZO Advent Calendar 2022 カレンダー25日目の記事です qiita.comBigQueryに書き込まれたSQL Serverの変更追跡ログを使って、変更のあったPKの変更ログと変更前のログを取得する方法をご紹介します。ZOZOではSQL Serverの変更追跡機能を使い、変更のあったP…
Python版を調べてみたがクエリの上書きができなかったり、余計な通信が発生していたりと現時点で本番運用できる状態ではなかった。Java版が使えるか検証してみる。Java版はテンプレートが用意されていたので、PostgresとSQL Serverでそれぞれ検証してみた。…
Apache BeamのPython jdbcコネクタを使いDataflowでジョブを実行してみました。Cloud SQLとDataflowを同一サブネット内に作りプライベートIPで接続を試みました。検証したところジョブ実行時に実行環境からPostgresにコネクションを張ろうとしていることがわ…
bashでやっていたがエラーハンドリングが色々きつかったのでPythonに書き換えました。ドキュメントは不十分だったのでGitHub見ながら作る感じになります。 一通り機能はあるので同じようなことしようとしてる方の参考になれば幸いです。techblog.zozo.com コ…
データ基盤旧環境で古い環境のハッシュ変換値をBigQueyの関数で実行した際の備忘録です。MD5の計算まではどの言語を使っても同じですが変換後の処理はそれぞれのライブラリや関数によって違うのでドキュメントや直接コードの確認が必要です。BigQueryのMD5関…
Apache Beam Python SQLServer To BigQueryを検証。クエリの上書きができないのは検証済みだがそれ以外で不足機能がないかみてみた。 www.case-k.jpSQL Serverの場合jarファイルの追加が必要。PostgresSQLは新たにjarを追加しなくてもドライバが含まれている…
Apache BeamのPythonでPostgreSQLからBigQueryに書き込めるか検証。検証したところJDBCをつかいPostgreSQLからBigQueryに書きこむことはできた。ただし、クエリの上書きはできなかった。 すべて「SELECT * FROM TABLE」で実行されてします。以下の条件に該当…
この記事はZOZO Advent Calendar 21日目の記事です。qiita.com DataflowでCloud Pub/Sub からKinesisへ書き込む処理とKinesisからBigQueryへ書き込む処理を作りました。本記事ではDataflowでKinesisを扱う際の注意点をご紹介できたらと思います。github.com …
Embulkにパッチを当てるための備忘録です。 Ruby Embulkのoutput pluginのリトライ処理を直しました。 github.com Java SQL Serverのinput pluginにパッチを当てるために利用 github.com github.com 事前準備 Embulkを使えるようにします。 curl --create-di…
rubyでマルチスレッド処理を使うとGILの制約により、CPUのコアをうまく使えなかったのでGILの制約を受けないjRubyで実行する方法を試してみました。マルチプロセスだとinput pluginからout put pluginに渡すrouter.emit_streamがうまく機能しなかったためで…
DigdagのPythonオペレータでPipenvで作ったpython環境を使うようにしました。Dockerfileは次の通りです。 FROM python:3 # use pipenv command in digdag python operator RUN mkdir -p /var/lib/python WORKDIR /var/lib/python RUN pip3 install pipenv CO…
Validationの備忘録です Visualizing cross-validation behavior in scikit-learn — scikit-learn 0.24.1 documentationVisualizing cross-validation behavior in scikit-learn — scikit-learn 0.24.1 documentation 基本的な分割方法 Kfold 全てのデータが…
Apache Beamノートブックからパイプラインを作ってみました。単純にGCSからファイルを取得し文字数を計算するパイプラインとなります。所感としてはとっても使いやすかったです。JavaだとEclipseを使うことになりますが、データの収集からデバッグまでノート…
Cloud Formationを使ったAWS Image Builderの使い方です。元々RedashのAMIを使っていましたが、環境変数のファイルを変えて再度コンテナをビルドした際AMI側で行ってるビルド処理と重なってしまうせいか、メッセージキューのceleryが動かなくなってしまう事…
アプリケーションのログCloud Loggingに出力してますがBigQuerで扱いたかったので整形しました。1カラム(jsonPayload.message)に次のような形でデータが入っています。 col_1: value_1, col_2: value_2, col_3: value_3, col_4: value_4 配列にして要素を取…
本記事はZOZOテクノロジーズ #1 Advent Calendar 2020 - Qiita 25日目の記事です。本記事ではBigQueryにある個人情報に対してカラムレベルのアクセス制御を行うポリシータグを付与したまま、利用者にマスク処理したカラムの閲覧権限を与える方法についてご紹…
本記事はZOZOテクノロジーズ #1 Advent Calendar 2020 - Qiita 24日目の記事です。バッチ方式の日次データ基盤とストリーミング方式のリアルタイムデータ基盤のスキーマ反映でData Catalogがどのように役立つのか概要も踏まえてご紹介できればと思います。後…
本記事はZOZOテクノロジーズ #1 Advent Calendar 2020 - Qiita 22日目の記事です。 Flex Slotsの概要や導入のメリット、データ基盤における活用用途をご紹介できればと思います。 また、Flex Slotsの購入が失敗した際にオンデマンドに自動で切り替える必要性…
備忘録です。データ連携の転送ファイルを自動生成するために、対象テーブルのカラムの取得に加えて、テーブルが日付サフィックステーブルか判定する必要がありました。直接テーブルに対してクエリを発行して調べるとお金が高くかかってしまうので、INFORMATI…
BCPコマンドの備忘録となります。今回はSQL Serverのを立てBCPコマンドを使ってテーブル間の情報をコピーできればと思います。 BCPとは SQL Server のETLツールです。SQL Server間のコピーやクエリを実行してファイルに出力することができます。 Embulkより…
画像系などでGPUを使いたくてGCE上でKaggleのコンテナイメージを使ったGPU環境をつくりました。以下自分用の備忘録となります。 割り当てリクエスト(はじめにやること) Google Compute Engineを立てる NVIDIA ドライバが含まれる CUDAをいれる コンテナ環境…
社内でデータ基盤を作っており、データの加工のしやすさだったり、書きやすさだったりでPythonで書き直すことができるか調べてみました。 調べた限りでは使いたい機能は既にサポートされていそうです。 Dynamic Destinations テーブル名を参照して動的にBQに…
FirebaseやGoogle Analyticsのログ収集を検討するにあたり調査した内容となります。 Firebase for Google Analyticsのログ収集 Firebase To BigQuery Firebase からBigQueryにリアルタイムでExport可能。Cloud Pub/SubにはExportできない。Firebase からBigQ…
DataflowでBigQueryのインサート時刻を書き込みたい場合は以下のようにして付与します。 .withFormatFunction((TableRow elem) -> elem.set("bigquery_insert_time", Instant.now().toString())) Dataflowのdynamic destinationを使う場合 WriteResult write…
TerraformでContainer RegistryのイメージをGCEにデプロイする方法の備忘録となります、github.com module "gce-container" { source = "terraform-google-modules/container-vm/google" version = "~> 2.0" container = { image = "gcr.io/${var.project}/<container image>"</container>…
Fluentdのプラグインで日時変換した際の備忘録です。 やりたいこと Fluentdで取得したログをBigQueryにいれるためにJSTをUTC変換して「+0000」も取り除く必要があります。「2020-07-06 11:00:00 +0000」 → 「2020-07-06 02:00:00 UTC」 実装 <filter> @type record_t</filter>…
オンプレ環境のテーブルをBigQueryにリアルタイムに連携するために、DataflowのDynamic Destinations機能を使いました。Dynamic Destinationsを使うことでテーブル名を考慮して出力先を変えることができます。カスタムテンプレートを作るにあたり、ベーステ…
DataflowのJava カスタムテンプレートの備忘録となります。pythonのテンプレート作成方法は次の通りです。 www.case-k.jp 環境構築 テンプレート作成 サンプルテンプレート作成 オプションを定義 テンプレート作成 所感 環境構築 まずはMavenをインストール…
最近ストリーミングデータの連携基盤を作っており、パイプラインを作る過程である疑問が浮かびました。 Dataflow必要なのかな。BigQueryでも良い気がする そこでDataflowがなかった場合、どうなるのか考えてみました。 データパイプライン 次のようなデータ…
Cloud FormationでAWSリソースを使ったRedash環境を構築してみました。Redashの開発環境の際必要となったことを備忘録として残せたらと思います。 Redashとは 役割 構成要素 クエリ実行フロー 作りたいもの Redashの注意点 環境変数の変更 Redashのバージョ…