BigQuery レガシーSQLを使用しているジョブを洗い出す

BigQuery レガシーSQLを使用しているジョブを洗い出す

・2025年8月1日から、GoogleSQLがBigQueryのデフォルト言語になる
・レガシーSQLを引き続き使う場合、明示的に指定する必要がある
・まずは、レガシーSQLを使用しているジョブを洗い出し、対応要否の確認を

2025年8月1日から、GoogleSQLがBigQueryのデフォルト言語になることがGoogleより発表されました。

今後も、レガシーSQLを使う場合、オプション等で明示的に指定する必要があります。

レガシーSQLを使用しているケースはあまりないと思いますが、BigQueryで簡単に確認できます。

Google Cloud リファレンスより

[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS[_BY_PROJECT]

この構文を使います。

レガシーSQLを使っているジョブを洗い出す

BigQueryをひらき、クエリに上記SQLをコピー&ペーストします。

プロジェクトIDと、リージョンをコピーして、上記SQLにペーストします。

プロジェクトIDの確認方法

BigQueryの左上「Google Cloud」をクリック

ここにあります

SQLを実行する

select構文をつけて、実行します。

例 プロジェクトIDがaaa リージョンがUSの場合 

select * from `aaa.region-US.INFORMATION_SCHEMA.JOBS`;

実行すると、直近で実行したジョブ一覧が表示されます。

複数のクライアント様で確認したところ、おおむね半年程度のジョブが見れるようです。

次に、このジョブから、レガシーSQLのジョブを洗い出します。

先ほどの構文を、WHERE条件でGOOGLE_SQL以外(=レガシーSQL)に絞ります。

select * from `aaa.region-US.INFORMATION_SCHEMA.JOBS`
where query_dialect <> "GOOGLE_SQL";

以下のような結果にばれば、レガシーSQLは使っていません。

対応不要です。

同様の手順で、US以外のリージョンもチェックします。

例えば、asia-northeast1をご利用の場合、以下のように実行します。

select * from `aaa.region-asia-northeast1.INFORMATION_SCHEMA.JOBS`
where query_dialect <> "GOOGLE_SQL";

BigQueryのデータセットがUSのみの場合、チェック不要です。

Google Cloud開発お承ります

datacompanyでは、お客様のご予算・環境に応じたクラウド開発を承ります。

お困りごとがございましたら是非ご相談ください。

お問い合わせフォーム

Google Cloud Run Functionsで処理がループする時の対処法

Google Cloud Run Functionsで処理がループする時の対処法

・ETLでもよく使われるGoogle Cloud Run Functions(Cloud Run 関数)
・例えば、Google Cloud Storageに保存したエクセルをBigQueryに取り込んでテーブル化できる
・ただし、大量のエクセルを処理する等で、処理済みのエクセルが再処理され異常ループに陥りやすい
・処理済みのエクセルを退避フォルダへアーカイブすることでループを回避できる
・アーカイブ済みファイルのSkip等の処理を追加するとベター

ETLでGoogle Cloud Storageに保存したエクセルを、BigQueryでテーブル化する時に役立つのがGoogle Cloud Run Functions(Cloud Run 関数)です。

Google Cloud Run Functionsは最近になって正式リリースされたもので、Google Cloud Functionsと聞けば、馴染みのある方も多いと思います。

現在、Google Cloud Functionsという製品ブランドは廃止され、Cloud Run Functionsという名前になりました。

そのCloud Run Functionsには第1世代と第2世代があり、いわゆる旧Google Cloud Functionsは第1世代にあたります。

第2世代が、今日ご紹介するCloud Run Functionsというわけです。

もし、これから、ETL等でご利用される場合、Cloud Run Functions(旧Google Cloud Functionsの第2世代)の利用を強く推奨いたします。

第1世代は制約も多く、使えるメモリー等のパフォーマンスも劣ります。

大容量データを、複雑な処理でバッチ化する場合、第1世代ではタイムアウト時間が最大540秒と短く、処理が終わらずに停止するケースがよくあります。

第2世代なら、ハイパフォーマンスで処理できるうえ、タイムアウト時間も最大900秒まで設定できますので、様々なビジネス課題に対応することが可能です。

今日は、その最新のGoogle Cloud Run Functionsのお話です。

Cloud Run Functionsの処理が異常ループする

例えば、Google Cloud Storage「バケットA」にエクセルが100個あるとします。

100個のエクセルを一括でBigQueryにテーブル化したい時、Cloud Run Functionsが便利です。

たいていの場合、以下のようにsource_bucketを指定し、1回の実行で済むように、エクセルを1つ処理して、また次のエクセルを処理・・のようにループさせると思います。

#ソースバケットの指定
source_bucket_name = 'bucket_a'

~~~

blobs = list(source_bucket.list_blobs())

for blob in blobs:
source_blob_name = blob.name

~~~

しかし、このまま実行すると、一度処理したエクセルも再実行する異常ループが発生します。

エクセルが少なければ処理できると思います。

しかし、エクセルが100個あるような場合、この異常ループにより、処理が進まず、Cloud Run Functionsがタイムアウトしてしまいます。

これは、「バケットA」にあるエクセルをすべて処理するまで、Cloud Run Functionsが動き続けるためです。

ファイルが少なければ、異常ループが発生しても、すべてのファイルが処理される場合が多いのですが、ファイルが多い場合、異常終了してしまいます。

やっかいなことに、このように想定外で終了した場合も、Cloud Run FunctionsのエラーログにはErrorが吐き出されないため、LoggingやMonitoringの検知もすり抜けてしまいます。

つまり、未処理であることにユーザが気づきづらいのです。

処理済みエクセルはバケットBへアーカイブ。バケットAからも消す。

このような場合、Google Cloud StorageにバケットBを作り、処理したエクセルをバケットBへコピーしてアーカイブします。

そして、処理したエクセルもバケットAから消します。

これにより、すべてのエクセルは1度しか処理されず、異常ループは解消します。

バケットBへアーカイブせず削除してもかまいませんが、リカバリ等を考慮するとソースファイルは保護するのがベターです。

以下のように構成すると望ましいです。

#ソースバケットの指定
source_bucket_name = 'bucket_a'
#アーカイブバケットの指定
archive_bucket_name = 'bucket_b'

~~~

blobs = list(source_bucket.list_blobs())

for blob in blobs:
source_blob_name = blob.name

~~


#処理済みファイルをアーカイブバケットにコピー
archive_bucket = storage_client.get_bucket(archive_bucket_name)
archive_blob = archive_bucket.blob(source_blob_name)
source_bucket.copy_blob(blob, archive_bucket, source_blob_name)

# ソースバケットから元ファイルを削除
blob.delete()

アーカイブ済みファイルのSkip等の処理を追加するとベター

他にも、次のような処理を追加するとベターです。

アーカイブ済みファイルのSkip処理を追加

アーカイブバケットを参照し、アーカイブ済みのファイル名をチェックします。

アーカイブ済みのファイルをSkipします。

archive_bucket = storage_client.get_bucket(archive_bucket_name)
archive_blob = archive_bucket.blob(source_blob_name)
if archive_blob.exists():
print(f"{source_blob_name} はアーカイブ済みなのでSkip")
continue

一時ファイル名をユニークにする

デフォルトでは、すべてのファイルの処理で、同じ一時ファイル名を使います。

複数の処理が同時に走ると、一時ファイルが上書きされてしまうことがあります。

【!】この処理を追加する場合、各ファイルを処理した後に一時ファイルも削除して、/tmpディレクトリの肥大化を防ぎましょう!

safe_blob_name = source_blob_name.replace('/', '_') 
tmp_source_path = f'/tmp/source_{safe_blob_name}'
tmp_dest_path = f'/tmp/{destination_blob_name}'

Google Cloud開発お承ります

datacompanyでは、お客様のご予算・環境に応じたクラウド開発を承ります。

お困りごとがございましたら是非ご相談ください。

お問い合わせフォーム

BigQuery Data Transfer Service(DTS)の限界

BigQuery Data Transfer Service(DTS)の限界

・誰でも簡単にノーコードでBigQueryにデータ連携できることが魅力的
・例えば、Google Cloud Storageと連携すれば、CSVをアップロードする度にBigQueryも自動更新
・ただし、CSVのカラムを増やしたりするとエラーになる Excelも未対応
・工数はかかるが安定運用や長期的な工数を考慮すると、Cloud Runでフルスクラッチ開発がベター
・Cloud Runなら、カラムが変動しても、動的にBigQueryのテーブルを更新できる

BigQueryのようなDWHに社内外データを集約したい時に役立つのがBigQuery Data Transfer Service(DTS)です。

馴染みのない名前かもしれませんが、Google広告のデータをBigQueryに連携する時など、知らないうちに利用していたという方も多いと思います。

DTSは、たびたびアップデートされており、連携できるサービスも多数あります。

Google広告やYoutube、Google Cloud Storage(GCS)等のGoogle系サービスをはじめ、AWS(S3・Redshift等)やTeradata、最近ではSalesforceやMeta広告のプレビュー版が提供されています。

Salesforceのプレビュー版についてはこちらの記事もお勧めです。

AWS(Redshift)とBigQueryの連携についてはこちらの記事もお勧めです。

DTSのユースケース Google Cloud Storage(GCS)とBigQueryを連携

DTSで、よく使われているケースとして、GCSとBigQueryの連携があります。

特に、KPIをトラッキングする企業様において、目標値や実績等をCSVで管理されており、それらをBigQueryに連携して、他データと統合分析する場合に役立ちます。

実装もとても簡単です。

任意のCSVを用意します。1行目に変数名、2行目以降にデータを入力します。

GCSの任意のバケットにアップロードします。

アップロードしたCSVをクリックします。

このマークをクリックし、パスをコピーします。

BigQueryをひらきます。データセット横のマークをクリックし、テーブルを作成します。

テーブルの作成元「Google Cloud Storage」を選択し、GCSバケットの欄に、コピーしたGCSのパスをペーストします。

テーブルに任意の名前を入力します。画像加工によりプロジェクトがブランクになっていますが、プロジェクトはご自身のプロジェクト名が入ります。

スキーマをお好みで設定します。複雑なデータでなければ自動検出で可能です。

1行目をスキップし、変数名がデータとして取り込まれないようにします。

作成ボタンをクリックし、テーブルを確認します。成功すれば、このようにCSVが取り込まれます。

BigQueryの画面左「データ転送」→「転送を作成」をクリックします。

ソース「Google Cloud Storage」を選択し、任意の転送構成名を入力します。

データセットやGCSのCSV等を同じ要領で設定し、保存をクリックします。

設定が完了すると、画面が切り替わり、転送を開始します。

成功すると、緑色のチェックマークが点灯します。

DTSには限界もある

このように設定すると、CSVのレコードが増えても、GCSにCSVをアップロードしておけば、設定したタイミングでBigQueryに自動で反映します。

KPIをHourlyや日次で管理している企業様の場合、ノーコードで簡単な操作だけで、このようなデータ連携を構築できます。

しかし、DTSには限界もあります。

例えば、先ほどのCSVのD列にVar4を追加します。

GCSにアップロードし、上書きします。

DTSの画面で、今すぐ転送を実行します。これによりGCSのデータがBigQueryに手動で反映できます。

しばらくすると、処理がエラーになります。

エラーの内容です

Error while reading data, error message: CSV processing encountered too many errors, giving up. Rows: 0; errors: 3; max bad: 0; error percent: 0; JobID:...省略

many erros たくさんのエラーが発生し、正常に読み込まれたRowsレコードは0行です。

これは、CSVのカラムを増やしたことが原因です。

DTSは、CSVの仕様が変わると、このようなとエラーになります。

弊社のお客様には、社内データをCSVで管理されており、CSVのカラムを定期的に増やす企業様もおられます。

また、Excelで管理されている企業様もおられます。

そのようなケースの場合、DTSでは対応できません。

Google Cloud Run Functionsのフルスクラッチでカスタマイズ対応


このようなケースの場合、初期工数はかかりますが、Google Cloud Run Functionsのフルスクラッチ開発がベターになります。

Cloud Run Functionsなら、カラムが増えてもエラーにならず、動的にBigQueryのテーブルを更新できます。

特定セルの値だけBigQueryに取り込むことも可能で、Excelも取り込めます。

安定運用や長期的な工数軽減、柔軟に対応したい場合等を考慮すると、DTSより優れている場合が多いと思います。

Cloud Run FunctionsはPythonに対応。イベント駆動で様々なケースに応じた処理がサーバレスにできる。

Google Cloud開発お承ります

datacompanyでは、お客様のご予算・環境に応じたクラウド開発を承ります。

お困りごとがございましたら是非ご相談ください。

お問い合わせフォーム

Looker Studioが重くなる理由と解決方法

Looker Studioが重くなる理由と解決方法

・Looker Studioが重くなりやすいのはスプレッドシートやCSV等のソースデータ
・特に、スプレッドシートは、KPI集計を重視している企業様ほど重くなりやすい
・スプレッドシートの特性を理解したうえでスリム化
・スリム化できない場合、Google BigQueryにスプレッドシートを取り込み内部テーブルに変換

Googleサーチコンソールを見ていると、どのような検索キーワードで弊社サイトに訪問されているか、傾向がある程度わかります。

そのなかで、ある検索キーワードで訪問される方が常に一定数いらっしゃいます。

それは「LookerStudioが重い」というお困りごとです。

「LookerStudioが重い!軽くしたい!」

弊社のお客様からも頻繁にご相談いただくもので、世界共通のLookerStudioあるある話かもしれません。

特にスプレッドシートを活用して、KPI集計を重視されている企業様ほど、LookerStudioが重くなる傾向にあるようです。

弊社のお客様には、KPI集計を重視されている企業様が多いです。

業態にもよりますが、特に、社内横断で売上データを共有されていたり、頻繁に更新する必要がある企業様においては、直感的に操作できて、数字も管理しやすいスプレッドシートが大活躍します。

スプレッドシートでKPI集計は限界がある

ただ、スプレッドシートで運用には限界があります。

スプレッドシートをご利用の方ならイメージしやすいと思いますが、レコード数やカラム数、関数、シート数が増えるほど、スプレッドシートの操作は重くなる傾向にあります。

一般的に、シート数は複数枚になることが多く、弊社のお客様において、スプレッドシート1枚のみで運用されていたことは1社様もありません。

複数枚のシートを使い、シート間を関数で参照・接続・・・といった使い方になりますが、この使い方は便利な反面、スプレッドシートの操作を重くする一因になります。

また、同時に、複数の方が編集することで拍車がかかります。

スプレッドシートは表計算が得意ですが、グラフや表などでグラフィカルに描画したり、スムーズ・動的にKPIをチェックする点おいては、圧倒的にBIのLookerStudioが優位になります。

このように、スプレッドシートは便利ですが、ある程度のレベルまで来ますと、スプレッドシートでKPI集計は限界があります。

スプレッドシートをLookerStudioのデータソースとするデメリット

このような場合、スプレッドシートをLookerStudioのデータソースとして参照し、BI側でKPI集計することがほとんどです。

しかし、このようなスプレッドシートを参照してしまうと、LookerStudioの操作感にもネガティブに影響します。

スプレッドシートのレコード数やカラム数、関数、シート数が増えるほど、LookerStudioの操作感も重くなる傾向にあります。

LookerStudioの描画が重くなり、もたつきが目立つようになると、データロードに時間がかかり、KPIをスムーズに集計できなくなります。

これは、とてもストレスフルなことです。

スプレッドシートを軽くできないか検討する

まずは、スプレッドシートを軽くできないか検討します。

述べた通り、スプレッドシートのレコード数やカラム数、関数、シート数が増えるほど、重くなります。

不要なシートやカラム削除し、関数もなるべく減らすことにより、ある程度は軽くすることができます。

しかし、この方法は、あまり現実的ではありません。

それは、KPI集計を重視されている企業様ほど、スプレッドシートを日常的に効率化されており、不要なシートやカラム等がほとんど見つからないためです。

また、スプレッドシートをBigQueryに連携済みで、LookerStudioのデータソースをスプレッドシートからBigQueryに変更済みであることがほとんどです。

BigQueryにスプレッドシートを取り込み内部テーブルに変換を検討する

このような場合、大きな効果を得られるのが、BigQueryを使った内部テーブルへの変換です。

BigQueryのデータは外部テーブルと内部テーブルがあります。

外部テーブルは、BigQueryの外側にあるデータです。

スプレッドシートはGoogle Driveにあり、BigQueryの外側にあります。

そのため、BigQueryでテーブル化したスプレッドシートも外部テーブルになります。

BigQueryのテーブル作成画面。スプレッドシートは外部テーブルと表示される。

スプレッドシートをBigQueryのテーブルとして簡単に取り込めますが、このままでは解決しません。

外部テーブルはBigQueryの内部ストレージの外側にあり、内部テーブルよりアクセスビリティが劣ります。

そこで、この外部テーブルを内部ストレージに取り込むことで内部テーブルに変換し、アクセスビリティを高めて、LookerStudioの操作性を改善します。

手順は以下の通りです。とても簡単です。ぜひお試しください。

・BigQueryで、外部テーブルを内部テーブルに変換するプログラム(SQL)を作成
・スケジュール化して定期実行

プログラム例

CREATE OR REPLACE TABLE
`プロジェクト名.データセット名.外部テーブルの名前` AS
SELECT
*
FROM
`プロジェクト名.データセット名.スプレッドシートを取り込んだ内部テーブルの名前`
;

BigQuery 外部テーブルとは

BigQuery 内部テーブルとは

Google Cloud開発お承ります

datacompanyでは、お客様のご予算・環境に応じたクラウド開発を承ります。

お困りごとがございましたら是非ご相談ください。

お問い合わせフォーム

Googleのチュートリアル通りに進めるとエラーになるときの対処法

Googleのチュートリアル通りに進めるとエラーになるときの対処法

・エラーメッセージから仮説を立て試す
・チュートリアルに記載のないことも試す
・特に、プレビュー環境の場合、チュートリアルが実態にそっていない傾向があることを知っておく
※執筆当時の情報です

前回は、Cloud Data Fusionを停止して年間200万円コスト削減したことをご紹介いたしました。

今回は、Amazon RedshiftからGoogle BigQueryへデータ連携を事例に、Google Cloudのチュートリアル通りに進めてもエラーになる場合の対処方法をご紹介いたします。

前回のお話は以下よりご覧いただけます。

Googleの公式サポートを使わずに解決できればベター

Google Cloudのチュートリアルは、ほぼ完全に整備されており、チュートリアルを進めることで大抵のことは解決します。

あまり経験していませんが、チュートリアル通りに進めてもエラーになる場合があります。

そのような場合、Google Cloudの公式サポート(有償)を頼ることになりますが、この事例で取り上げるCloud Data Fusionの日本サポートチームはインドのバンガロールにあります。

時差や英語でのコミュニケーションに加え、オンライン会議で画面操作を試す→エラー→再操作→再エラー・・・を繰り返すなど、効率が良いとは言えず、とても多くの工数を消費してしまいます。

また、事前にチケットで、プログラムや出力結果を送っているものの、担当チームやメンバーによっては、会議で初めて内容を確認されたり、仮説を持ち寄らず、場当たり的に複数人から質問攻め・操作を求められる・・・といったこともありました。

なるべく公式サポートを使わずにエラーを解決できるのがベターですので、今回のお話が皆様にもご参考になれば幸いです。

Amazon RedshiftとGoogle Cloudの連携

クライアント様がAWSからGoogle cloudにクラウド移管をご検討中で、AmazonのDWHであるRedshiftから、Google CloudのDWHであるBigQueryにデータ移管を準備していました。

RedshiftからBigQueryに連携する方法はいくつかありますが、今回のご要望の場合、BigQueryのデータ転送APIであるBigQuery Data Transfer Service(DTS)を使うことが最も簡単です。

DTSによるデータ連携は、Redshiftへの直接連携ではなく、下図のようにAWSのクラウドストレージS3を介して連携されます。

DTSでRedshiftに連携すると、S3を介して連携。S3はステージング領域として使用。

Amazon Redshift からスキーマとデータを移行する

この設定には、AWS側の情報やアクセス権限等が必要です。

クライアント様は代理店様を通じてAWSをご契約されており、AWSの管理も代理店に任せておられました。

クライアント様にお願いし、代理店様から情報一式をいただきましたが、Amazon IAM ユーザーの情報が見当たりませんでした。

クライアント様に確認したところ、IAMユーザについてはクライアント様もお持ちでなく、わからないとのことでした。

そこで、代理店様に確認したところ、代理店様の社内規定により、クライアント様や弊社にはIAMユーザーを引き渡せないとの回答でした。

一般的には、委託元もIAMユーザを使えるのですが、クライアント様と代理店様の契約上の理由とのことで、予定していたDTSによるデータ連携を断念しました。

DTS以外でRedshiftとBigQueryを連携

DTS以外でもRedshiftとBigQueryを連携できます。

網羅できておりませんが、例えば、以下の方法があります。

一番上のDTSは、AWSのIAMユーザーが必要なため、断念した方法です。

方法AWS IAMユーザー
BigQuery Data Transfer Service(DTS)必要
BigQuery Omni必要
Cloud Data Fusion不要

2つ目のBigQuery Omniは、AWSのS3を外部データソースとしてBigQueryから参照し、SQLを実行できるものです。

RedshiftからS3へのデータコピーは必要ですが、BigQueryへのデータコピーは不要です。

しかし、この方法もAWS IAMユーザーが必要で、今回の要件を満たしません。

また、現在、東京リージョンに非対応です。

クライアント様にご相談したところ、納期が最速で、安定稼働できることをお求めでしたので、Cloud Data Fusionで進めることになりました。

Cloud Data Fusionは、バックエンドでクライアント様専用の仮想サーバを立ててパイプラインを構築するようなもので、時間課金のETLツールです。

1年間利用すると、現在の為替レートで約200万円課金されますが、今回のご要望のように、クラウド移管に際して一時利用であれば、デフォルトで用意されているGoogle Cloud の月間無償枠で利用できます。

チュートリアル通りに進るとエラーになる

チュートリアルを見ると、あらかじめ、AWSのJDBCドライバーをCloud Data Fusionにアップロードしておく必要があります。

HostやPortなど、その他の必要な情報をクライアント様・代理店様から入手し、設定しました。

Cloud Data Fusionでは、設定が正しいか、デプロイ前にVaridateボタンを押下すると検証できます。

ところが、ボタンを押下したところ、見慣れないエラーが出ました。

Read timed out

一時的なものかと思い、何回か試しますが、結果は変わりません。

AWS側のマニュアルを見ると、JDBCドライバーのオプションとして、timeoutに関する設定を変更できるようです。

そこで、Cloud Data Fusionでこれらの変数を設定して、timeoutを無効にしました。

0(無効)、7200秒(2時間)でtimeoutパラメータを設定

しかし、結果は変わりません。

Read timed outでタイムアウトエラーになります。

チュートリアルどおりに進めているのにデプロイできずエラーになります。

ここで、解決策が尽きてしまいました。

エラーメッセージから仮説をたて試す

Read timed outというエラーメッセージからすると、Redshiftにデータを参照している際に発生するエラーのようです。

一般的には、データ容量が大きくなるほど、連携に必要な時間も長くなります。

カラム(列)が増えると、データ量も急激に増え、時間も長くなります。

そこで、1カラムだけ連携したところ、Varidateが成功し、デプロイできました。

次に、カラムを2カラムで試すと、Read timed outのエラーになりました。

どうやら2カラム以上だとTimeoutするようです。

そこで、レコード数がどの程度までなら、2カラムでもデプロイできるか確認することにしました。

10レコード程度で2カラムのサンプルデータをRedshiftに用意し、Varidateしたところ、Timeoutしました。

デプロイに成功した1カラムのデータは、1000レコード以上あります。

Timeoutした2カラムのサンプルデータは10レコードです。

このTimeoutエラーは、データ量ではなく、設定など別の理由が原因と仮説を立てました。

どの設定が原因か特定するため、1つずつ設定内容を変えてみることにしました。

例えば、JDBC接続に必要なAWS側のパスワードを、故意に1文字減らしました。

そうすると、エラーメッセージが変わり、Timeoutは表示されません。

これにより、パスワードは正しく、パスワード以外の方法が原因であるこことがわかります。

このような地味なチェックを進めたところ、Output Schemaを自動判定させず、手動入力してからVaridateすると、デプロイできました。

チュートリアルではVaridateで自動判定するOutput Schema。今回の事例では、この機能が原因でエラーに。

チュートリアルでは、手動入力ではなく、Varidateで自動判定させますので、思いもよりませんでした。

Google Cloudのチュートリアル通りに進めてもエラーになる場合、このように仮説をたてて進めると突破できる可能性があります。

プレビュー環境の場合、チュートリアルが実態にそっていない傾向がありますので、より一層ご留意ください。

・エラーメッセージから仮説を立て試す
・チュートリアルに記載のないことも試す
・特に、プレビュー環境の場合、チュートリアルが実態にそっていない傾向があることを知っておく

Google Cloud開発お承ります

datacompanyでは、お客様のご予算・環境に応じたクラウド開発を承ります。

お困りごとがございましたら是非ご相談ください。

お問い合わせフォーム

SalesforceとBigQueryを連携 プレビュー環境で年間200万円削減

SalesforceとBigQuery連携
プレビュー環境で年間200万円削減

・Cloud Data FusionからBigQuery Data Transfer Serviceに切り替え
・Cloud Data Fusionの年間コスト200万円を削減
※執筆当時の情報です。Basic月間利用費$1,100、為替レート150円で計算したものです

「SalesforceとBigQueryを連携したい」というご要望が多いことから、このページをご覧の皆様も、「あること」にお困りではないかと思います。

それは「連携コストが高すぎる」ことです。

Cloud Data Fusionは利用費が高い

SalesforceとBigQueryを連携する方法はいくつかありますが、最も簡単でメジャーな方法はCloud Data Fusionです。

Cloud Data Fusionは、外部ソースとGoogle Cloudを連携できるノーコードツールで、ETL / ELT パイプラインを簡単に構築できます。

Cloud Data Fusion公式

しかし、ノーコードで簡単にできるものの、本番運用に適したBasic以上の利用料は月間約$1,100~と高額で、$1=150円として月16.5万円、年約200万円もかかります。

しかもこの料金、連携するデータ量が0ゼロであっても発生します。それは、Cloud Data Fusionの仕組みに理由があります。

Cloud Data Fusionでパイプラインを構築するためには、最初にインスタンスを立てなければなりません。

皆様専用の仮想サーバをGoogle Cloud に1つ立てるようなものとイメージいただければと思います。

このインスタンスが時間課金となっており、連携するデータ量が0ゼロであっても料金が発生するというわけです。

Cloud Data Fusion料金公式

連携を開始してから、しばらくの間、たいていのお客様はデータ連携を自動化できたことで喜ばれます。

しかし、事前に料金のことをわかっていたとしても、Googleからの高額請求が続きますと、「コストカットできないものか・・・」とご相談をいただくケースが多いです。

過去には「毎月1日だけインスタンスを作り、データ連携後にインスタンスを削除できないでしょうか」といったご相談をいただいたこともありました。

しかし、その方法では、Salesforceのデータ鮮度が落ちてしまい、本業への影響が大きく、断念されておられました。

SalesforceとBigQueryを直連携!

2024年3月Googleは「BigQuery と Salesforce Data Cloud 間の双方向データ共有が一般提供開始」とリリースしました。

これにより、Cloud Data Fusionなしで、SalesforceとBigQueryを連携できるようになりました。

現在、この機能はプレビュー版として提供されており、料金も無料です。

パイプラインを切り替えるだけで、年間200万円のコストが削減できます。

プレビュー版とは、本番リリース前のテスト環境のようなものです。

プレビュー版にはGoogleのSLAもございませんが、現時点で問題なく稼働しており、Cloud Data Fusionに戻されたお客様は一社様もございません。

Googleプロダクトステージ公式

Google Cloud開発お承ります

datacompanyでは、お客様のご予算・環境に応じたクラウド開発を承ります。

お困りごとがございましたら是非ご相談ください。

お問い合わせフォーム