## Description I have a problem where I'm tasked to successfully transform and repurpose data from one SQL server to another. Call the source $\text{src}$ and the target database $\text{tgt}$. In order to assess the quality of the migration for a given field, I am given *volumes only*, namely * $V_\text{src} = \#\{\text{rows in src for which property }P\text{ is true}\}$ * $V_\text{tgt} = \#\{\text{rows in tgt for which property }P\text{ is true}\}$ I was wondering if there was a set of metrics one often uses to report completion metrics from $0\%$ to $100\%$. The metric should be 0 if the target is very dissimilar from source, and 100 if it is perfeect similarity. ## An important side issue Often you *overshoot* and you have $V_\text{src} \ll V_\text{tgt}$, so just reporting ratios yields that $\text{tgt}$ has $270\%$ more content than $\text{src}$. In these situations **I would like to assign property P a low score near 0**, but not a negative score. ## Approach For now I have for a given error coefficient $\varepsilon$ that's (mostly) $-1\leq \varepsilon \leq 1$ (but can overshoot to values close to 2 or 3) the following rescaling functions: $$\text{invLin}(\varepsilon) = \dfrac{1}{1+\varepsilon}\qquad {\color{blue}\checkmark}\quad\text{slow degrowth from }100\%\text{ to }0\%$$ However it gives huge error percentages like $500\%$ a high grade and doesn't penalize low error percentages enough to my taste. I came up with this second one: $$\text{invLog}(\varepsilon) = 1-\log^{+}(1+\varepsilon)\qquad {\color{blue}\checkmark}\quad\text{quick degrowth from }100\%\text{ to }0\%$$ You can see the two functions plotted for values of $100\lvert\varepsilon\rvert$ ranging from $0\%$ to $500\%$ with a zoom on the $1-100$ zone on the left part Notation: $f^+$ is the positive part of a function $f^+(x)=\max(f(x),0)$ [![Rescaling attempt][1]][1] [1]: https://i.sstatic.net/bGWY9.png