case-kの備忘録

日々の備忘録です。データ分析とか基盤系に興味あります。

2020-01-01から1年間の記事一覧

BigQueryの個人情報にポリシータグによるカラムレベルのアクセス制御を適用したまま、利用者にマスクしたカラムの閲覧権限を与える方法

本記事はZOZOテクノロジーズ #1 Advent Calendar 2020 - Qiita 25日目の記事です。本記事ではBigQueryにある個人情報に対してカラムレベルのアクセス制御を行うポリシータグを付与したまま、利用者にマスク処理したカラムの閲覧権限を与える方法についてご紹…

Data CatalogにオンプレDBのスキーマを同期させて、バッチ・ストリーミングデータ基盤(BigQuery)のスキーマ反映を自動化する

本記事はZOZOテクノロジーズ #1 Advent Calendar 2020 - Qiita 24日目の記事です。バッチ方式の日次データ基盤とストリーミング方式のリアルタイムデータ基盤のスキーマ反映でData Catalogがどのように役立つのか概要も踏まえてご紹介できればと思います。後…

データ基盤におけるBigQuery Flex Slots導入メリットとオンデマンド自動切り替えの必要性

本記事はZOZOテクノロジーズ #1 Advent Calendar 2020 - Qiita 22日目の記事です。 Flex Slotsの概要や導入のメリット、データ基盤における活用用途をご紹介できればと思います。 また、Flex Slotsの購入が失敗した際にオンデマンドに自動で切り替える必要性…

BigQueryのINFORMATION_SCHEMAを使い、対象テーブルが日付サフィックステーブルかに判定してみる

備忘録です。データ連携の転送ファイルを自動生成するために、対象テーブルのカラムの取得に加えて、テーブルが日付サフィックステーブルか判定する必要がありました。直接テーブルに対してクエリを発行して調べるとお金が高くかかってしまうので、INFORMATI…

SQL Server BCPプラクティス

BCPコマンドの備忘録となります。今回はSQL Serverのを立てBCPコマンドを使ってテーブル間の情報をコピーできればと思います。 BCPとは SQL Server のETLツールです。SQL Server間のコピーやクエリを実行してファイルに出力することができます。 Embulkより…

Kaggleのコンテナイメージを使ったGPU環境をGoogle Compute Engineに作る

画像系などでGPUを使いたくてGCE上でKaggleのコンテナイメージを使ったGPU環境をつくりました。以下自分用の備忘録となります。 割り当てリクエスト(はじめにやること) Google Compute Engineを立てる NVIDIA ドライバが含まれる CUDAをいれる コンテナ環境…

技術調査メモ:Dataflow_Pythonサポート状況について_20200917

社内でデータ基盤を作っており、データの加工のしやすさだったり、書きやすさだったりでPythonで書き直すことができるか調べてみました。 調べた限りでは使いたい機能は既にサポートされていそうです。 Dynamic Destinations テーブル名を参照して動的にBQに…

技術調査メモ:Firebase / Google Analytics ログ収集調査_20200911

GCP

FirebaseやGoogle Analyticsのログ収集を検討するにあたり調査した内容となります。 Firebase for Google Analyticsのログ収集 Firebase To BigQuery Firebase からBigQueryにリアルタイムでExport可能。Cloud Pub/SubにはExportできない。Firebase からBigQ…

DataflowでBigQueryのインサート時刻を付与する

DataflowでBigQueryのインサート時刻を書き込みたい場合は以下のようにして付与します。 .withFormatFunction((TableRow elem) -> elem.set("bigquery_insert_time", Instant.now().toString())) Dataflowのdynamic destinationを使う場合 WriteResult write…

TerraformでCompute EngineにContainer Registryのイメージをデプロイする

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のFilterプラグインを使った日時変換

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>…

DataflowのDynamic Destinationsを使って動的に出力先のテーブルを変える

オンプレ環境のテーブルをBigQueryにリアルタイムに連携するために、DataflowのDynamic Destinations機能を使いました。Dynamic Destinationsを使うことでテーブル名を考慮して出力先を変えることができます。カスタムテンプレートを作るにあたり、ベーステ…

Dataflowテンプレート作成方法(Java)

DataflowのJava カスタムテンプレートの備忘録となります。pythonのテンプレート作成方法は次の通りです。 www.case-k.jp 環境構築 テンプレート作成 サンプルテンプレート作成 オプションを定義 テンプレート作成 所感 環境構築 まずはMavenをインストール…

Dataflowでしかできないことってなんだろう。BigQueryだけじゃだめなのかな。

最近ストリーミングデータの連携基盤を作っており、パイプラインを作る過程である疑問が浮かびました。 Dataflow必要なのかな。BigQueryでも良い気がする そこでDataflowがなかった場合、どうなるのか考えてみました。 データパイプライン 次のようなデータ…

Cloud FormationでAWSリソースを使ったRedash環境を構築してみる

Cloud FormationでAWSリソースを使ったRedash環境を構築してみました。Redashの開発環境の際必要となったことを備忘録として残せたらと思います。 Redashとは 役割 構成要素 クエリ実行フロー 作りたいもの Redashの注意点 環境変数の変更 Redashのバージョ…

技術調査メモ:Cloud Run (fully managed)とCloud Run for Anthosを比較してみる_20200605

Cloud Run (fully managed) Cloud Run for Anthosの違いを調べてみました。 機能比較 Cloud Run (fully managed) Cloud Run for Anthos Quotas and Limits Cloud Run Connecting to Google Cloud services 料金体系について 参考 GKE と Cloud Run、どう使い…

技術調査メモ:Google提供のDataflowテンプレートでできること、できないこと_20200604

Dataflow テンプレートを使用すると、Cloud Storage 上のパイプラインをステージングして、さまざまな環境で実行できます。テンプレートは、Google 提供のテンプレートを使用することも、自身で作成することもできます。 Google提供のDataflowテンプレートで…

Change Trackingを使って、SQL Serverのデータ変更箇所を取得する

差分更新連携を行うために、SQL Serverのデータ変更追跡機能を使ってみました。 SQL Serverからリアルタイムに連携するために、差分更新機能を検討しています。 実行環境を準備 コンテナを起動 データベースとテーブル作成 データを追加 Change Trackingを使…

BigQueryのFlex Slotsで柔軟にスロットを購入してジョブを制御する

BigQueryのFlex Slotsを試して見ました。バッチで重たいタスクの前にFlex Slotsを購入し、タスク完了後Flex Slotsを元に戻します。 BigQuery Flex Slotsについて やりたいこと 実行コマンド Commitment Reservation Removement 環境情報 権限 BQコマンドの認…

DigdagとEmbulkを使って並列処理をしてみる

DigdagとEmbulkを使って並列処理を行った際の備忘録です。 Embulkを使った並列処理 環境や実装方法について Dockerfie 秘密情報 docker-compose プロジェクトと秘密情報の登録 Embulkの設定ファイル。 Embulkを使った並列処理 Embulkを使って並列処理を行い…

FluentdのInputプラグインを作って、定期的にSQLServerからPubSubにデータを転送してみる

備忘録としてFluentdのInputプラグインの作り方を残しておきます。 作るプラグインについて Dockerfile 自作プラグインをつくる プラグインの実装サンプル 設定ファイル 起動 動作確認 所感 作るプラグインについて SQL Serverからデータを取り出し、取得結…

効果検証入門を読んでみた所感

頭の整理にもなるので効果検証入門を読んだ所感と実務に使えそうな方法を整理してみました。 簡単に書籍の紹介 本書はバイアスがある中で、バイアスを取り除いた介入の本当の効果を調べる手法を紹介しています。 例えば、購買意欲の高いユーザに広告配信を行…

書籍メモ:効果検証入門 5章 回帰不連続デザイン(RDD)

効果検証入門 5章 回帰不連続デザイン(RDD)の備忘録と所感になります。 概要 回帰不連続デザイン(RDD)とは 活用用途について 介入有無がルールで決められている場合(傾向スコアを使えない場合) 時系列で介入の変化が起きていない場合(DIDを使えない場合) 実…

書籍メモ:効果検証入門 4章 差分の差分法(DID)とCausallmpact

効果検証入門 4章 差分の差分法(DID)とCausallmpactの備忘録となります。 DIDとは DIDを使いたい時 DID (Difference in Difference) 平行トレンド過程 トレンドが同一ではない場合どうするのか? 1. 仮定を満たさないデータを取り除くこと 2. トレンドの乖…

Digdagを使ってBigQueryのジョブを実行してみる

業務でDigdagを使う機会かあったので、DigDagを使ってBigQueryのジョブを実行してみました。 事前準備 JDK 8u72をインストール DigDagをインストール サービスアカウントキーを発行 データセットをつくる DigDagを使ってみる ジョブ 依存関係を定義 ディレク…

書籍メモ:効果検証入門 3章 傾向スコアを用いた分析

本記事は効果検証入門3章の備忘録となります。 概要 傾向スコアとは 活用用途について 傾向スコアマッチング IPW 実践 事前準備 傾向スコアマッチング マッチング後のデータで効果の推定 IPW 傾向スコアと回帰分析はどちらを使うべきか 所感 概要 傾向スコア…

書籍メモ:効果検証入門 2章 介入効果を測るための回帰分析 

効果検証の2章では回帰モデルを使い、介入変数の説明力から因果関係を解釈します。www.case-k.jp 概要 実践 データ項目 RCTでデータを絞り込む。 バイアスのあるデータを作る 回帰分析 分析結果のレポート 回帰分析におけるセレクションバイアスと解決策 セ…

書籍メモ:効果検証入門 1章 セレクションバイアスとRCT

本記事は効果検証入門1章の備忘録となります。gihyo.jp 概要 セレクションバイアスとは RCTとは RCTの状態をつくりだすにはコストがかかる 実践編 データ項目 RCTと効果検証 バイアスのあるデータの効果検証 概要 セレクションバイアスとは 比較しているグ…

Cloud BuildでGKEのデプロイ作業を自動化させる

Cloud Buildを使いアプリのデプロイ作業を自動化してみました。Cloud Source RepositoriesへのpushをトリガーにDockerfileをビルド、イメージをContainer Registry に登録、登録したイメージをGKEのクラスタにデプロイさせます。 Cloud Buildの基本操作 マニ…

Google Kubernetes Engineにアプリをデプロイする方法

Google Kubernetes Engine上にコンテナ化した株価アプリをデプロイしてみました。 アプリの構成 セットアップ GKEのクラスタを作成 DockerfileをGoogle Cloud Registoryにpushする マニフェストファイルの作成 Deploymentを定義(React+Nginx)ーreact-app-dep…