понедельник, 10 ноября 2014 г.

Пакетное удаление проектов DQS

http://social.technet.microsoft.com/wiki/contents/articles/14065.delete-dqs-projects-created-from-running-ssis-dqs-cleansing-activities.aspx#Description

Automated TSQL Script Approach

In the case where there are too many projects to manually delete, you may use the TSQL script described here to automate the cleanup for a certain date range.
1. The script uses a date and time range to target the project deletion to a scope of time.
2. The script bulk deletes Data Quality projects according to the ‘Type’ flag which is set to 3 by default (1 = KB, 2 = Cleansing project DQS Client, 3 = SSIS Project)
3. The script deletes project in both Locked and Unlocked states.
4.  If a project fails to delete, the script continues to delete the remaining projects.
5.  Printed text output shows progress of the deletions and any errors which occur.

Instructions

1. The Windows account executing the TSQL script should have a ‘dqs_administrator’ role; we recommend the account to have a sysadmin role on the box.
2. Run the script from SQL Server Management Studio while connected to SQL Server instance running the DQS instance (hosting the DQS_MAIN and DQS_PROJECTS databases)
3. Modify the ‘FromDate’ and ‘ToDate’ dates and times  in the script to define the window for cleansing up the projects

TSQL Code


SET NOCOUNT ON
USE DQS_MAIN
  
DECLARE @FromDate datetime
DECLARE @ToDate datetime
DECLARE @ProjectId bigint
DECLARE @LockClientId bigint
DECLARE @DqProject varbinary(max)
DECLARE @ResultRecords varbinary(max)
        ,@ErrMessage VARCHAR(max)
        ,@rowcount INT
        ,@errCount INT = 0
  
--Update From date and To date here before execution of script
SELECT @FromDate = CAST('2012-10-19 00:00:01.001' AS datetime)
SELECT @ToDate = CAST('2012-10-19 23:59:59.997' AS datetime)
  
PRINT '***************************************************************'
PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' 'Executing script for date range ' CAST(@FromDate AS VARCHAR(MAX)) +' to ' +  CAST(@ToDate AS VARCHAR(MAX))
  
DECLARE DELETE_PROJECTS_CURSOR CURSOR FOR
        SELECT [ID], ISNULL([LOCK_CLIENT_ID],-1)
        FROM [DQS_Main].[dbo].[A_KNOWLEDGEBASE]
        WHERE [TYPE] = 3 -- BatchDQProject, projects that are generated by SSIS packages
        AND [CREATE_DATE] BETWEEN @FromDate AND @ToDate
      
OPEN DELETE_PROJECTS_CURSOR
      
FETCH NEXT FROM DELETE_PROJECTS_CURSOR
INTO @ProjectId, @LockClientId
  
WHILE @@FETCH_STATUS = 0
BEGIN
    BEGIN TRY
        PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' 'Operating on Project: [' CAST(@ProjectId AS VARCHAR(MAX)) +']'
        EXECUTE [KnowledgebaseManagement].[SetDataQualitySession] @clientId=@LockClientId, @knowledgebaseId=NULL
  
        IF (@LockClientId != -1)
        BEGIN
            EXECUTE [KnowledgebaseManagement].[DQProjectGetById] @ProjectId,@DqProject OUTPUT
            EXECUTE [KnowledgebaseManagement].[DQProjectExit] @DqProject,@ResultRecords OUTPUT
        END
  
        -- delete project's activity archive
        DELETE FROM [dbo].[A_PROFILING_ACTIVITY_ARCHIVE]
        WHERE [ACTIVITY_ID] IN (SELECT ID FROM [dbo].[A_KNOWLEDGEBASE_ACTIVITY] WHERE [KNOWLEDGEBASE_ID] = @ProjectId)
  
        -- refresh the project state
        EXECUTE [KnowledgebaseManagement].[DQProjectGetById] @ProjectId,@DqProject OUTPUT
        PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'Deleting project: [' + CAST(@ProjectId AS VARCHAR(MAX)) +']'
        EXECUTE [KnowledgebaseManagement].[DQProjectDelete] @DqProject
        PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'Deleted project: [' + CAST(@ProjectId AS VARCHAR(MAX)) +']'
    END TRY
    BEGIN CATCH
        PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'An error has occurred with the following details'
        PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'Error ' + CONVERT(varchar(50), ERROR_NUMBER()) +
              ', Severity ' + CONVERT(varchar(5), ERROR_SEVERITY()) +
              ', State ' + CONVERT(varchar(5), ERROR_STATE()) +
              'Procedure ' + ISNULL(ERROR_PROCEDURE(), '-') +
              ', Line ' + CONVERT(varchar(5), ERROR_LINE());
        PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'Error Message: ' + ERROR_MESSAGE();
        SELECT @errCount = @errCount + 1
        PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'Skipping this project because of errors'
    END CATCH                 
    FETCH NEXT FROM DELETE_PROJECTS_CURSOR INTO @ProjectId, @LockClientId
END
IF @errCount > 0
    PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'Script completed with ' + CAST(@errCount AS VARCHAR(MAX)) + 'errors'
ELSE
    PRINT CAST(GETDATE() AS VARCHAR(MAX)) + ' :: ' + 'Script completed successfully'
PRINT '***************************************************************'
  
BEGIN TRY
    CLOSE DELETE_PROJECTS_CURSOR
    DEALLOCATE DELETE_PROJECTS_CURSOR
END TRY
BEGIN CATCH
    --Do nothing
END CATCH

среда, 18 июня 2014 г.

Подключение дополнительных репозиториев CentOS6

http://howtoit.ru/linux/centos/item/15-podklyuchenie-repozitoriev-centos-6-epel-rpmforge-remi.html

В для репозитория EPEL в x64 ОС использовать адрес
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

понедельник, 24 марта 2014 г.

Обзор визуальных плагинов Leaflet. Часть 2.

Leaflet-Semicircle

Расширяет функционал L.Circle, позволяет помещать на карту окружности ограниченные по радиусам.

Демо доступно по адресу http://jieter.github.io/Leaflet-semicircle/example-semicircle.html

Leaflet.functionaltilelayer

Плагин позволяет переопределять логику URL запросов для тайловых слоев.
var funcLayer = new L.TileLayer.Functional(function (view) {
    var url = 'http://otile{3}.mqcdn.com/tiles/1.0.0/map/{0}/{1}/{2}.jpg'
        .replace('{0}', view.zoom)
        .replace('{1}', view.tile.row)
        .replace('{2}', view.tile.column)
        .replace('{3}', view.subdomain);
    return url;
});

 Leaflet.geoCSV

Позволяет загружать данные из файлов типа CSV.
L.geoCsv(null,{  titles: ['lat', 'lng', 'popup'],  fieldSeparator: ';',  lineSeparator: '\n',  deleteDobleQuotes: true,  firstLineTitles: false,  onEachFeature: function (feature, layer) {    var popup = '';    for (var clave in feature.properties) {      var title = geo_csv.getPropertyTitle(clave);      popup += '<b>'+title+'</b><br />'+feature.properties[clave]+'<br /><br />';    }    layer.bindPopup(popup);  }});

Данные

48.8566;2.3522;París, capital de Francia40.4168;-3.7038;Madrid, capital de España41.9015;12.4608;Roma, capital de Italia37.9837;23.7293;Atenas, capital de Grecia
Демо доступно по адресу http://joker-x.github.io/Leaflet.geoCSV/example/options-test/index.html

Leaflet.PolylineDecorator

Позволяет задавать шаблон для линий полигона (штриховая, стрелки, иконки и т.п.).

Позволяет делать цветные маркеры.

leaflet.bouncemarker

Позволяет делать маркер, которые "подскакивает" при добавлении на карту.

Leaflet.TextPath

Позволяет создавать Polyline, который состоит их текстовых элементов.

Leaflet.awesome-markers plugin v2.0

Позволяет создавать красивые маркеры на базе Glyphicons и Font-Awesome icons.

Leaflet Data Visualization Framework

Позволяет помещать на карту маркеры в виде диаграмм и графиков на базе SVG.

Leaflet.TileLayer.Grayscale

Позволяет добавлять тайловый слой в серой гамме. Фактически, заменяет изображения Canvas с обработанным рисунком из  оригинального тайла.
Позволяет просматривать тайловые изображения.

Leaflet.Graticule

Позволяет добавлять на карту слой с градусной сеткой.

Leaflet UserMarker

Расширение стандартного маркера, позволяет устанавливать "точность" - полупрозрачную окружность вокруг маркера и включать/выключать пульсацию маркера.
 

Leaflet EdgeMarker

Позволяет добавлять на карту специальные маркеры вдоль границ карты для обозначения расположения маркеров, которые не входят в видимую зону.

leaflet.shapefile

Позволяет загружать данные через JavaScript на карту из ESRI Shapefile.


leaflet.FileGDB

Позволяет добавлять данные из ESRI fgdb файлов.

Leaflet.Terminator

Позволяет добавлять тесные области на карту, например день-ночь.


Leaflet.FeatureSelect

Добавляет на карту специальный маркер, при пересечении с которым будут подсвечиваться геометрические объекты карты такте как: Points, LineStrings, Polygons, MultiPoints, MultiLineStrings, и MultiPolygons. Поддерживает GeoJson слои.

Leaflet.MakiMarkers

Позволяет добавлять на карту маркеры из библиотеки Maki markers.

Editable Polylines plugin

Позволяет добавлять на карту plyline с возможность перетаскивания ее точек.

leaflet-omnivore

Библиотека JavaScrip из набора MapBox. Позволяет добавлять на карту векторы из следующих форматов: CSV, GPX, KML, WKT, TopoJSON.

Leaflet.TileLayer.IIP

Один из самых новых плагинов. Позволяет работать с тайловыми изображениями в формате IIP, предназначенном для изображений с высоким разрешением, например космические снимки.



Обзор визуальных плагинов Leaflet. Часть 1.


Leaflet.ellipse

Позволяет помещать на карту эллипсы с указанными координатами центра, размерами полуосей и углом наклона.
Leaflet.ellipse
Адрес примера и описание http://jdfergason.github.io/Leaflet.Ellipse.

Leaflet.Plotter

Плагин позволяет создавать пути на карте, есть возможность создавать новые точки внутри пути и перетаскивать существующие. 

Leaflet.markercluster

Позволяет группировать значения точек на карте.
Позволяет работать с большими наборами точек.

Leaflet.label

Позволяет привязывать текстовые комментарии и фигуры к векторным объектам карты.

Существует альтернативная версия плагина Leaflet.iconlabel.

RaphaelLayer

Позволяет помещать на карту объекты, созданные в библиотеке векторной графики JavaScript Raphaël.

OverlappingMarkerSpiderfier-Leaflet

Позволяет перекрывать большое количество маркеров в одной точке одним маркером. При клике на такой маркер появляется красивое отображение перекрытых значений.


TileLayer.BoundaryCanvas

Позволяет отображать часть карты, ограниченной указанной геометрической фигурой.

Leaflet MaskCanvas

Позволяет создавать Canvas слой для отображения большого количества данных на карте.



HeatCanvas

Позволяет добавлять "тепловую карту". Для построения использует стили CSS3 и классы divIcon.
HeatCanvas Heat Map

heatmap.js

Позволяет добавлять "тепловую карту" на базе Canvas HTML5. 
heatmap.js Heat Map

Leaflet divHeatmap Layer

Легковесный плагин для создания "тепловой карты" используя CSS3 и divIcon.

WebGL Heatmap

Высокопроизводительный плагин для создание "тепловой карты" с использованием WebGL.

Leaflet.MultiTileLayer

Дозволяет комбинировать тайловые слои в одном слое на карте.
var map = L.map('map').setView(L.latLng(57.7, 11.9), 12);
L.TileLayer.multi({
    14: {
        url: 'http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png',
        subdomains:'1234'
    },
    17: {
        url: 'http://server.arcgisonline.com/ArcGIS/'
            'rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
    }
}, {
    minZoom: 0,
    maxZoom: 17,
    attribution: 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> &mdash; '
         '&copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, '
         '<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'
         '&mdash; '
        'Tiles &copy; Esri &mdash; '
        'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, '
        'Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community'
}).addTo(map);

Leaflet.AnimatedMarker

Позволяет создавать движущиеся маркеры на карте.
Leaflet.AnimatedMarker Demo
Демо доступно по адресу http://openplans.github.io/Leaflet.AnimatedMarker