Создание кубов анализа данных на основе данных из учетных систем 1С

| рубрика: Проектирование | автор: ipanshin
Метки: , ,

Зачастую той отчетности, которую предлагает система 1С недостаточно, чтобы ответить на все маркетинговые вопросы и правильно понять тренды рынка. Для этого существует альтернатива множеству плоских отчетов – это многомерный анализ данных или «кубов». На эту тему написано достаточно много, поэтому данная статья не претендует на какую-либо новизну или новый результат.

Основная …

Сколько места занимают таблицы?

| рубрика: Программирование | автор: st
Метки:

Информация о дисковом пространстве, используемом таблицами текущей базы данных.

DECLARE @TableInfo TABLE (
    table_name sysname,
    row_count int,
    reserved_size_kb nvarchar(50),
    data_size_kb nvarchar(50),
    index_size_kb nvarchar(50),
    unused_size_kb nvarchar(50)
)

INSERT INTO @TableInfo
EXEC sp_MSforeachtable 'sp_spaceused ''?'''

UPDATE @TableInfo
SET
    data_size_kb     = replace(data_size_kb, 'KB', ''),
    reserved_size_kb = replace(reserved_size_kb, 'KB', ''),
    index_size_kb    = replace(index_size_kb, 'KB', ''),
    unused_size_kb …

Уровни изоляции транзакций в SQL. Шпаргалка

| рубрика: Испытания | автор: st
Метки: ,

Материал этой статьи послужил основой для одного из параграфов главы "Транзакции, изоляция и блокировки", входящей в книгу "СУБД для программиста. Базы данных изнутри". Для более глубокого понимания механизмов см. параграфы "Уровни SQL-92", "Блокировки", "Взаимные блокировки процессов (deadlock)", "Версии данных", "Проявления эффектов изоляции" и "Толстые транзакции".

Статья также была опубликована в …

SPM (SQL Programming Macroprocessor): создайте свой предметный язык

| рубрика: Программирование | автор: st
Метки: ,

Пример использования технологии представлен в статье "SQL и модульное тестирование".

Назначение

Разработка серверного кода на процедурном расширении SQL имеет свои особенности. Во-первых, SQL - декларативный язык, и потому обычная для традиционного программирования функциональная декомпозиция зачастую является неэффективной. Во-вторых, SQL - специализированный язык манипуляции данными, и достичь наглядности и читаемости прикладного кода бывает …

SQL и модульное тестирование

| рубрика: Испытания | автор: st
Метки: ,

В статье рассказывается о применении технологии модульных тестов при разработке приложений на SQL и его процедурных расширениях.

Статья опубликована в журнале "Мир ПК" №7-2008 и послужила основой для одной из глав книги "СУБД для программиста. Базы данных изнутри".

Место модульного тестирования в системе испытаний

Важнейший этап разработки программной системы - ее …

Постраничная (пакетная, paging) выборка в SQL Server

| рубрика: Испытания | автор: st
Метки:

От редактора. Данная версия статьи частично устарела, смотрите новый вариант с учетом изменений в SQL Server 2012

Материал этой статьи послужил основой для одной из глав книги "СУБД для программиста. Базы данных изнутри".

* * *

На дворе 2008 год, а разработчики MS SQL Server до сих пор не реализовали встроенную возможность ограничивать …

Работа с датами. SQL Server 2005

| рубрика: Программирование | автор: st
Метки:

Сюда складываю полезные функции и тонкие моменты при работе с датами на MS SQL Server.

BETWEEN - закрытый интервал

BETWEEN - закрытый интервал, но будьте вимательны со временем в датах...

SELECT *
FROM (
   SELECT '2008-02-03' AS d1
   UNION
   SELECT '2008-02-03 23:59:59' AS d1
   UNION
   SELECT '2008-02-04' AS d1
   UNION
   SELECT '2008-02-04 …

Случайная строка из таблицы. SQL Server 2005.

| рубрика: Программирование | автор: st
Метки:

Воспользуемся псевдослучайной последовательностью на основе механизма проекций (view) для выборки случайной строки из таблицы.

Проекция rand2 выдает новое случайное число в поле rand_value. Для выборки строки создадим еще одну проекцию:

CREATE VIEW random_row
AS
WITH t1_rows AS (
    SELECT id, row_number() OVER (order by id) as num FROM T1
)
SELECT id …

Псевдослучайная последовательность в SQL Server

| рубрика: Программирование | автор: st
Метки:

Использование встроенной функции rand() в запросах чревато проблемой получения последовательности одинаковых чисел. Например

CREATE TABLE T1 (id int);
GO

INSERT INTO T1
SELECT 1
UNION
SELECT 2
UNION
SELECT 3;

SELECT rand(), id FROM T1;

Выдает одинаковые значения

rand_value             id
---------------------- -----------
0,581556027773794      1
0,581556027773794      2
0,581556027773794      3

(3 …

Пронумеровать записи. Пример для MSSQL 2005

| рубрика: Программирование | автор: st
Метки:

Как пронумеровать записи в таблице в одном ее поле по порядку следования другого поля. Пример для MSSQL 2005.

Пример с использованием документированных функций, нумерация в заданном порядке.

UPDATE table1
SET field1 = T2.rownum
FROM table1 T1 INNER JOIN
    (SELECT ROW_NUMBER() OVER (ORDER BY field2 ASC) AS rownum, field2
        FROM table1 …