The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/public/app/plugins/datasource/mssql/CheatSheet.tsx

130 lines
5.3 KiB

import { css } from '@emotion/css';
import { GrafanaTheme2 } from '@grafana/data';
import { Trans } from '@grafana/i18n';
import { useStyles2 } from '@grafana/ui';
export function CheatSheet() {
const styles = useStyles2(getStyles);
return (
<div>
<h2>
<Trans i18nKey="cheat-sheet.title">MSSQL cheat sheet</Trans>
</h2>
<Trans i18nKey="cheat-sheet.time-series">Time series:</Trans>
<ul className={styles.ulPadding}>
<li>
<Trans i18nKey="cheat-sheet.time-series-tip">
return column named time (in UTC), as a unix time stamp or any sql native date data type. You can use the
macros below.
</Trans>
</li>
<li>
<Trans i18nKey="cheat-sheet.time-series-tip-2">
any other columns returned will be the time point values.
</Trans>
</li>
</ul>
<Trans i18nKey="cheat-sheet.optional">Optional:</Trans>
<ul className={styles.ulPadding}>
<li>
<Trans i18nKey="cheat-sheet.optional-tip" values={{ columnName: 'metric' }}>
return column named <i>{'{{columnName}}'}</i> to represent the series name.
</Trans>
</li>
<li>
<Trans i18nKey="cheat-sheet.optional-tip-2" values={{ columnName: 'metric' }}>
If multiple value columns are returned the {'{{columnName}}'} column is used as prefix.
</Trans>
</li>
<li>
<Trans i18nKey="cheat-sheet.optional-tip-3" values={{ columnName: 'metric' }}>
If no column named {'{{columnName}}'} is found the column name of the value column is used as series name
</Trans>
</li>
</ul>
<p>
<Trans i18nKey="cheat-sheet.resultsets-time-sorted">
Resultsets of time series queries need to be sorted by time.
</Trans>
</p>
<Trans i18nKey="cheat-sheet.table">Table:</Trans>
<ul className={styles.ulPadding}>
<li>
<Trans i18nKey="cheat-sheet.table-tip">return any set of columns</Trans>
</li>
</ul>
<Trans i18nKey="cheat-sheet.macros">Macros:</Trans>
{/* eslint-disable @grafana/i18n/no-untranslated-strings */}
<ul className={styles.ulPadding}>
<li>$__time(column) -&gt; column AS time</li>
<li>$__timeEpoch(column) -&gt; DATEDIFF(second, &apos;1970-01-01&apos;, column) AS time</li>
<li>
$__timeFilter(column) -&gt; column BETWEEN &apos;2017-04-21T05:01:17Z&apos; AND
&apos;2017-04-21T05:01:17Z&apos;
</li>
<li>$__unixEpochFilter(column) -&gt; column &gt;= 1492750877 AND column &lt;= 1492750877</li>
<li>
$__unixEpochNanoFilter(column) -&gt; column &gt;= 1494410783152415214 AND column &lt;= 1494497183142514872
</li>
<li>
$__timeGroup(column, &apos;5m&apos;[, fillvalue]) -&gt; CAST(ROUND(DATEDIFF(second, &apos;1970-01-01&apos;,
column)/300.0, 0) as bigint)*300{' '}
<Trans i18nKey="cheat-sheet.fillvalue" values={{ null: 'NULL', previous: 'previous' }}>
by setting fillvalue Grafana will fill in missing values according to the interval. fillvalue can be either
a literal value, {'{{null}}'} or {'{{previous}}'}; {'{{previous}}'} will fill in the previous seen value or{' '}
{'{{null}}'} if none has been seen yet
</Trans>
</li>
<li>
$__timeGroupAlias(column, &apos;5m&apos;[, fillvalue]) -&gt; CAST(ROUND(DATEDIFF(second,
&apos;1970-01-01&apos;, column)/300.0, 0) as bigint)*300 AS [time]
</li>
<li>$__unixEpochGroup(column,&apos;5m&apos;) -&gt; FLOOR(column/300)*300</li>
<li>$__unixEpochGroupAlias(column,&apos;5m&apos;) -&gt; FLOOR(column/300)*300 AS [time]</li>
</ul>
{/* eslint-enable @grafana/i18n/no-untranslated-strings */}
<p>
<Trans i18nKey="cheat-sheet.example-time-group" values={{ timeGroupMacro: '$__timeGroup' }}>
Example of group by and order by with {'{{timeGroupMacro}}'}:
</Trans>
</p>
{/* eslint-disable @grafana/i18n/no-untranslated-strings */}
<pre>
<code>
SELECT $__timeGroup(date_time_col, &apos;1h&apos;) AS time, sum(value) as value <br />
FROM yourtable
<br />
GROUP BY $__timeGroup(date_time_col, &apos;1h&apos;)
<br />
ORDER BY 1
<br />
</code>
</pre>
{/* eslint-enable @grafana/i18n/no-untranslated-strings */}
<Trans i18nKey="cheat-sheet.condtional-macros">
Or build your own conditionals using these macros which just return the values:
</Trans>
{/* eslint-disable @grafana/i18n/no-untranslated-strings */}
<ul className={styles.ulPadding}>
<li>$__timeFrom() -&gt; &apos;2017-04-21T05:01:17Z&apos;</li>
<li>$__timeTo() -&gt; &apos;2017-04-21T05:01:17Z&apos;</li>
<li>$__unixEpochFrom() -&gt; 1492750877</li>
<li>$__unixEpochTo() -&gt; 1492750877</li>
<li>$__unixEpochNanoFrom() -&gt; 1494410783152415214</li>
<li>$__unixEpochNanoTo() -&gt; 1494497183142514872</li>
</ul>
{/* eslint-enable @grafana/i18n/no-untranslated-strings */}
</div>
);
}
function getStyles(theme: GrafanaTheme2) {
return {
ulPadding: css({
margin: theme.spacing(1, 0),
paddingLeft: theme.spacing(5),
}),
};
}