メトリック数式をデータベースに保存する最も良い方法は何ですか?最初は、生の列を視覚化ツールに投げて、私のメトリックを計算しました。私はすぐに、クライアントの要件などのために標準ルールに多くの(有効な)例外があることを学びました。私は現在、ETL /データベースレイヤの間に分子と分母の列を作成する必要があるかどうかを検討しています。視覚化ツール。後で計算するテーブルに数式を保存していますか?
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.eval.html
恩赦の書式が、私は以下の3つの列を持っている:私は、Pythonを使用して検討していた
はPostgresのテーブルに格納される文字列を読み取るために評価します。 1つの列が特定のプロジェクトに関連付けられ、次に2つのメトリックの例が表示されます。
id productive_time productive_status
165 "productive_time = talk_time + hold_time + after_call_work_time" "productive_status = status_3_time + status_4_time + status_5_time"
1911 "productive_time = talk_time + hold_time + after_call_work_time + ring_time" "productive_status = status_7_time + status_8_time"
そして、可視化層において、メトリック計算は、単に潜在的な計算の数十を有すると比較SUM(productive_time)/SUM(call_count)
であろう。
他のベストプラクティスはありますか?
代わりに大量のCASE WHEN文を使用することが考えられます。しかし文字通り数百に及ぶ数のidsがカバーされています。彼らの95%は同じでしょう。
編集:
for x in range(0, len(df['inbound_time_formula'].unique())):
df.loc[df['inbound_time_formula'] == df['inbound_time_formula'].unique()[x], 'inbound_time'] = df.eval(df['inbound_time_formula'].unique()[x], inplace=True)
私は、データフレームをdf.evalしようとしたが、全体のデータフレームではなく、式が存在しているだけの行に適用するように見えます。
リスクを軽減するために、私は確かにDB内ではなく、メモリ内で評価を行っています(そうするためにはPythonを使用します)。単一の価値を測定するN方法を扱う際に、一般的なベストプラクティスはありますか? – trench
まあ、ルール列にチェック制約を追加して、数字、特殊文字、コールル名だけを許可することができます –