Files
AWatch-rus/grafana-1c/sql/mssql_views_template.sql
T

87 lines
2.7 KiB
Transact-SQL
Executable File

-- Шаблон для MS SQL-базы 1С.
-- ВНИМАНИЕ: замените dbo.onec_raw_* на реальные объекты вашей конфигурации 1С.
IF OBJECT_ID('dbo.onec_kpi_unposted_documents', 'V') IS NOT NULL DROP VIEW dbo.onec_kpi_unposted_documents;
GO
CREATE VIEW dbo.onec_kpi_unposted_documents AS
SELECT
CAST('main' AS nvarchar(64)) AS company,
CAST(COUNT(*) AS float) AS value
FROM dbo.onec_raw_documents d
WHERE d.posted = 0;
GO
IF OBJECT_ID('dbo.onec_kpi_sales_today', 'V') IS NOT NULL DROP VIEW dbo.onec_kpi_sales_today;
GO
CREATE VIEW dbo.onec_kpi_sales_today AS
SELECT
CAST('main' AS nvarchar(64)) AS company,
CAST(ISNULL(d.currency, 'RUB') AS nvarchar(16)) AS currency,
CAST(ISNULL(SUM(d.amount), 0) AS float) AS value
FROM dbo.onec_raw_sales_documents d
WHERE d.posted = 1
AND CAST(d.doc_date AS date) = CAST(GETDATE() AS date)
GROUP BY ISNULL(d.currency, 'RUB');
GO
IF OBJECT_ID('dbo.onec_kpi_overdue_receivables', 'V') IS NOT NULL DROP VIEW dbo.onec_kpi_overdue_receivables;
GO
CREATE VIEW dbo.onec_kpi_overdue_receivables AS
SELECT
CAST('main' AS nvarchar(64)) AS company,
CAST(
CASE
WHEN age_days BETWEEN 1 AND 7 THEN '1-7'
WHEN age_days BETWEEN 8 AND 30 THEN '8-30'
WHEN age_days BETWEEN 31 AND 90 THEN '31-90'
ELSE '90+'
END AS nvarchar(16)
) AS aging_bucket,
CAST(ISNULL(currency, 'RUB') AS nvarchar(16)) AS currency,
CAST(SUM(amount_due) AS float) AS value
FROM (
SELECT
r.currency,
r.amount_due,
CASE WHEN DATEDIFF(day, CAST(r.due_date AS date), CAST(GETDATE() AS date)) > 0
THEN DATEDIFF(day, CAST(r.due_date AS date), CAST(GETDATE() AS date))
ELSE 0 END AS age_days
FROM dbo.onec_raw_receivables r
WHERE r.amount_due > 0
) x
WHERE age_days > 0
GROUP BY
CASE
WHEN age_days BETWEEN 1 AND 7 THEN '1-7'
WHEN age_days BETWEEN 8 AND 30 THEN '8-30'
WHEN age_days BETWEEN 31 AND 90 THEN '31-90'
ELSE '90+'
END,
ISNULL(currency, 'RUB');
GO
IF OBJECT_ID('dbo.onec_kpi_posting_errors_24h', 'V') IS NOT NULL DROP VIEW dbo.onec_kpi_posting_errors_24h;
GO
CREATE VIEW dbo.onec_kpi_posting_errors_24h AS
SELECT
CAST('main' AS nvarchar(64)) AS company,
CAST(COUNT(*) AS float) AS value
FROM dbo.onec_raw_posting_errors e
WHERE e.error_at >= DATEADD(hour, -24, GETDATE());
GO
IF OBJECT_ID('dbo.onec_kpi_data_freshness', 'V') IS NOT NULL DROP VIEW dbo.onec_kpi_data_freshness;
GO
CREATE VIEW dbo.onec_kpi_data_freshness AS
SELECT
CAST('main' AS nvarchar(64)) AS company,
CAST('documents' AS nvarchar(64)) AS source,
CAST(
CASE
WHEN MAX(d.updated_at) IS NULL THEN 999999
ELSE DATEDIFF(second, MAX(d.updated_at), GETDATE())
END AS float
) AS value
FROM dbo.onec_raw_documents d;
GO