質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1446閲覧

BQのCloudFunctionsでGCSからCSVを自動インポートしたい

yghvbn

総合スコア3

BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/12 08:21

GCSにcsvをアップロードしたときに、自動でBQに取り込むCloudFunctionsを整備したいと思っています。
使用言語はPythonです。
ふつうにアップロードさせると文字化けするので、UTF-8変換の工程を挟みたいと思います。
複数のファイルをアップして、(注文202103,注文202104,,もしくは会員情報20210501,といった具合)それぞれにテーブルを作らせようと思います。
Python初心者なので、コードを教えていただきたいです。

Python

1from google.cloud import bigquery 2import pandas as pd 3from google.cloud import storage 4import re 5 6 7def load_data(data, context): 8 9 10 11 # get file info 12 13 bucket_name = data['bucket'] 14 15 file_name = data['name'] 16 17 uri = 'gs://{}/{}'.format(bucket_name, file_name) 18 19 id = file_name.split(".") 20 match = re.search(r'([^/]+$)',id[0]) 21 22 tid = match.group() 23 24 if "注文" in tid: 25 table = tid.replace("注文","order_") 26 elif "会員情報" in tid: 27 table = tid.replace("会員情報","guest_") 28 29 df = pd.read_csv(uri,encoding = "shift-jis") 30 31 client = bigquery.Client('Test') 32 33 dataset_id = 'origin_data' 34 35 table_id = 'data' 36 37 bq = bigquery.Client() 38 39 dataset_ref = bq.dataset(dataset_id) 40 41 42 43 # Set Load Config 44 45 job_config = bigquery.LoadJobConfig() 46 47 job_config.write_disposition = 'WRITE_APPEND' 48 49 50 # Load data 51 52 load_job = client.load_table_from_dataframe( 53 54 df, table_id, job_config=job_config 55 56 ) 57 58 print("Starting job {}".format(load_job.job_id)) 59 60 load_job.result() 61 62 print("Job finished.")

このどこかで、if文を使って、会員情報csvと注文csvのそれぞれのカラム情報を指定しなければいけないと考えているのですが、あっていますか?
ほかに不足があれば教えてください。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問