メインコンテンツへスキップ
Procore

Pythonを使用したSnowflakeへのエクスポート

概要

Procore Analytics Cloud Connect Access ツールは、Procore から Snowflake へのデータ転送の構成と管理に役立つコマンドラインインターフェイス (CLI) です。

これは、次の 2 つの主要コンポーネントで構成されています。

  • user_exp.py:構成セットアップ ユーティリティ
  • ds_to_snowflake.py:データ同期スクリプト

前提条件

  • Pythonがシステムにインストールされている
  • Procore Delta Share へのアクセス
  • Snowflakeアカウントの認証情報
  • 以下を使用して、必要な依存関係をインストールします。
    • pip install -r requirements.txtを実行します

ステップ

初期設定

python user_exp.pyを使用して設定ユーティリティを実行します。

データ同期

構成後、データ同期を実行するには次の 2 つのオプションがあります。

  • 直接実行:
    • Python ds_to_snowflake.py
  • スケジュールされた実行
    • セットアップ時に設定した場合、ジョブは Cron スケジュールに従って自動的に実行されます。
    • スケジュールログを確認するために、スケジュールが設定されるとすぐにファイル 「procore_scheduling.log」 が作成されます。
    • また、ターミナルコマンドで実行してスケジュールを確認することもできます。

LinuxおよびMacOSの場合:

  • 編集/削除 - 以下を使用してスケジューリングcronを編集します。

    '''bash

    EDITOR=nano crontab -e

    ```

  • 上記のコマンドを実行すると、次のようなものが表示されます。

    2 * * * *
    /ユーザー/your_user/snowflake/venv/bin/python

     
    /ユーザー/your_user/snowflake/sql_server_python/connection_config.py
    2>&1 |行を読み取っている間。do echo "$(日付) - $line";これで完了です>>

     
    /Users/your_user/snowflake/sql_server_python/procore_scheduling.log # procore-data-import

     
  • また、schedule cron を調整したり、行全体を削除したりして、スケジュールによる実行を停止することもできます。

Windowsの場合:

  • スケジュール タスクが作成されていることを確認します。

    ```
    PowerShellの

    schtasks /query /tn "ProcoreDeltaShareScheduling" /fo LIST /v

    ```

  • スケジューリングタスクを編集/削除するには、タスクスケジューラを開きます。
  • Win + Rを押し、 taskschd.mscと入力し、と入力し、[Enter]を押します。
  • スケジュールされたタスクに移動します。
  • 左側のウィンドウで、[タスク スケジューラ ライブラリ] を展開します。
  • タスクが保存されているフォルダを探します。
    例: タスク スケジューラ ライブラリまたはカスタム フォルダー。
  • タスクを見つけます。
  • タスク名 ProcoreDeltaShareScheduling を探します
  • それをクリックすると、下部のペインに詳細が表示されます。
  • スケジュールを確認します。
    • [トリガー] タブをチェックして、タスクがいつ実行されるかを確認します。
    • [履歴] タブをチェックして、最近の実行を確認します。
  • タスクを削除するには:
    • GUI からタスクを削除します。

デルタ共有の構成

  • config.shareファイルの作成
  • 構成ユーティリティを実行する前に、Delta Share 資格情報を使用して config.share ファイルを作成する必要があります。ファイルはJSON形式である必要があります。

    {

    "shareCredentialsVersion":1、
    "bearerToken": "xxxxxxxxxxxxx",
    "endpoint": "https://nvirginia.cloud.databricks.c...astores/xxxxxx"

    }

     

  • 必須フィールド:
    • ShareCredentialsVersion: バージョン番号 (現在は 1)。
    • BearerToken: Delta Share アクセス トークン。
    • エンドポイント: Delta Share エンドポイント URL。
    • これらの詳細は、Procore Web UI から取得できます。
  • config.shareを作成する手順:
    • config.share という名前の新しいファイルを作成します。
    • 上記の JSON テンプレートをコピーします。
    • プレースホルダーの値を実際の資格情報に置き換えます。
    • ファイルを安全な場所に保存します。
    • 構成時に、このファイルへのパスを指定する必要があります。データ ソースを構成するときに、次の情報を提供するように求められます。
      • テーブルのリスト (カンマ区切り)。
      • すべてのテーブルを同期するには、空白のままにします。
      • 例: table1、table2、table3。
  • config.share ファイルへのパス。

Snowflakeの構成

次のSnowflakeの詳細を提供する必要があります。

  • 認証 (いずれか選択):
    • ユーザー認証
      • ユーザー名
      • パスワード(安全に入力)
  • キーペア認証
    • ユーザー名
    • 秘密キーのファイルパス
    • 秘密鍵ファイルのパスワード
  • 接続の詳細:
    • アカウント識別子
    • 倉庫名
    • データベース名
    • スキーマ名
    • 同時スレッドの数

スケジュール オプション

このツールには、自動データ同期をスケジュールする機能があります。

  • cronジョブの構成
    • 日次ジョブを設定するかどうかを選択する
    • 「はい」の場合は、cron スケジュールを指定します
    • 形式: * * * * * (分、時間、日、月、日、曜日)
    • 毎日午前 2 時の例: 0 2 * * *
  • 即時実行 
    • 設定後すぐにds_to_snowflake.pyを実行するオプション
  • ファイル構造

    解除
    ├── requirements.txt# 依存関係
    ├── user_exp.py# 設定ユーティリティ
    ├── ds_to_snowflake.py# データ同期スクリプト
    ├── config.yaml# 生成された設定
    ├── config.share# Delta Share 構成ファイル
    ├── procore_scheduling.log# スケジューリング実行のログ


    使用例
    • ステップ 1: 依存関係をインストールする
      $ pip install -r requirements.txt
    • ステップ2:構成ユーティリティを実行する
      $ python user_exp.py 
    • Procore アナリティクス クラウド コネクトへのアクセス 
      • この CLI は、Procore データをSnowflakeにアクセス/書き込みするためのソースストアとデスティネーションストアを選択するのに役立ちます。
      • [Enter]を押して続行します。
      • テーブルのリストを (コンマ区切りで) 入力し、すべてのテーブル (projects、users、tasks) を空白のままにします。
      • config.shareへのパスを入力します。/path/to/config.shareです。
      • ユーザー名に「snowflake_user」と入力します。
      • どの認証タイプを使用しますか?(ユーザー/key_pair): 入力します。
      • ユーザーの場合は 1、
      • キーペアの場合は 2:
      • パスワードを入力してください:********
      • アカウントを入力:my_account
      • 入庫: my_warehouse
      • Enter database name: procore_db (データベース名を入力:
      • スキーマ名を入力: procore_schema
      • スレッド数を入力してください: 4
      • これをcronの日常のジョブとして構成しますか?(はい/いいえ):はい
      • スケジュールを cron 形式で入力します (例: * * * * * ): 0 2 * * *
      • ジョブを今すぐ実行しますか?(はい/いいえ):はい
    • ステップ 3: 手動実行 (必要な場合)
      $ pythonのds_to_snowflake.py 
  • 設定の再利用
    このツールは、構成を config.yaml ファイルに保存し、以前に保存した設定を再利用することを提案します。
    • ソース構成は再利用できます。
    • ターゲット(Snowflake)構成は再利用できます。
    • いずれかの構成を個別に更新することを選択できます。

ベストプラクティス

  • 認証
    • 可能な場合は、キーペア認証を使用します。
    • 資格情報を定期的にローテーションします。
    • 必要最小限の権限を使用します。
  • パフォーマンス
    • システムの機能に基づいてスレッド数を調整します。
    • テスト用のテーブルの小さなサブセットから始めます。

トラブルシューティング

  • 一般的な問題と解決策:
    • 無効な認証タイプ
      • プロンプトが表示されたら、必ず「1」(ユーザー)または「2」(key_pair)のいずれかを選択してください。
  • cronジョブのセットアップ
    • 適切なシステム権限があることを確認します。
    • ジョブの実行に失敗した場合は、システムログを確認します。
    • ds_to_snowflake.pyに正しい権限があることを確認します。
    • システムログを確認して、cronジョブの設定を確認します。
      「procore_scheduling.log」ファイルを参照してください。
  • 構成ファイル
    • スクリプトと同じディレクトリにあり、
    • 名前は config.yaml です。
    • 変更を加える前にバックアップしてください。
  • サポート
    • スクリプトのログ出力を確認します。
    • config.yaml ファイルを確認します。
    • 権限関連の問題については、システム管理者に問い合わせてください。
    • Delta Share アクセスの問題について、Procore サポートにお問い合わせください。

手記: 変更を加える前に必ず構成をバックアップし、最初に非運用環境で新しい構成をテストすることを忘れないでください。