現状
下記2つをGCSのバケットで管理している。
- データロック済みのデータcsv
- 上記から解析対象をマート化したデータcsv
課題
- マート化したデータ処理の紐づけ(現状はjupyter notebook)
- データ内容の理解が属人化している
AIの回答で試そうと思っている案
データカタログ:
GCSに保存されたデータの内容を管理するために、データカタログ(例: Google Cloud Data Catalog)の利用を検討してください。
各CSVファイルについて、試験名、データ取得日、カラムの説明、分析における注意点などを記述しておくことで、チームでの共有や再利用が容易になります。
メタデータ管理:
ファイル名だけでなく、GCSのメタデータを利用して、データに関する情報を付与することも有効です。例えば、content-typeにtext/csvを指定したり、カスタムメタデータとして、データの説明やデータ作成者などを記述できます。
アクセス制御:
権限管理は最小限の権限原則に従い、必要な人にのみアクセス権を付与します。
GCSのIAMを使用し、分析者には読み取り権限のみを付与し、データ管理者には書き込み権限を付与します。
ファイル命名規則への紐付け:
前述の通り、ファイル名に試験名、日付、バージョンなどの情報を含めることで、どの分析コードがどのデータに対応しているかを推測しやすくします。
例えば、trial_A_20231027_v1.csvに対応する分析コードをanalyze_trial_A_v1.pyのように命名することで、紐付けが容易になります。
メタデータによる紐付け:
GCSのメタデータや、データカタログのメタデータに、分析コードのファイル名やGitのコミットハッシュなどを記載することで、より正確な紐付けが可能です。
例えば、analyzed_byというメタデータにanalyze_trial_A_v1.pyを指定したり、analysis_commitというメタデータにGitのコミットハッシュを指定します
bigqueryで保存してbigqueryからデータをpython dfにダウンロード
from google.cloud import bigquery
import pandas as pd
# サービスアカウントのJSONキーファイルのパスを指定
client = bigquery.Client.from_service_account_json('path/to/your/service-account.json')
# SQLクエリを実行
query = """
SELECT
trial_id,
age,
gender,
diagnosis
FROM
`your-project.your_dataset.your_table`
WHERE
age >= 18
LIMIT 1000
"""
query_job = client.query(query)
# クエリ結果をpandas DataFrameに変換
df = query_job.to_dataframe()
# DataFrameの内容を表示
print(df)
# DataFrameの情報を表示
df.info()
# DataFrameの最初の5行を表示
print(df.head())
結果
Coming soon