SSIS Converting wildcard characters file pattern to regex

Sometimes we need to use wildcard characters in ours SSIS solutions to define a search pattern. The SSIS has total support to wildcard, and you can keep using it to find files in a local file system, but how can we use it in a C# script for an FTP directory? The best way that I have found was using regex.

//Converting FilePattern to regex language
Regex mask = new Regex(‘^’ + Dts.Variables[“FilePattern“].Value.ToString().Replace(“.”, “[.]“).Replace(“*”, “.*”).Replace(“?”, “.”) + ‘$’, RegexOptions.IgnoreCase);

The FilePattern is my variable with the file name pattern.

E.g.

  • FileParttern [wildcard characters]: FinancialsData*.xlsx
  • FileParttner [Regex]: ^FinancialsData.*[.]xlsx$

You can use the regex tester (http://regexstorm.net/) to check your pattern.

 

Instalando e configurando (DB2) o Squirrel SQL no Linux

O Squirrel SQL é uma ótima opção de client SQL, pois além de possuir diversas funcionalidades sua distribuição é livre.  Segue o passo a passo para instalação e configuração do Squirrel SQL no Linux.

Instalação

1. Primeiro acesse o site http://squirrel-sql.sourceforge.net/e clique em Download and Installation.
2. Selecione a opção Install jar of SQuirreL 3.6 for Windows/Linux/others (ou superior)
3. Faça o download do instalador.
4. O instalador é um .jar, uma extensão compilada do Java. Abra uma janela de terminal, vá até o diretório do instalador e digite java -jar squirrel-sql-3.6-standard.jar

Será aberta a seguinte tela de instalação, clique em Next

5. Aqui são algumas informações. Caso queira ler fique a vontade, ou então clique em Next.

6.  Nessa tela ele irá pedir qual a pasta de instalação, no meu caso é a “/home/antonioc/squirrel-sql-3.6″, altere para uma de sua preferência ou deixe a padrão. Clique em Next.

7. Caso a pasta informada não exista, a seguinte mensagem será exibida. Clique em OK para criar a pasta.

8. Agora aparecerá a tela para selecionarmos os pacotes a serem instalados, mantenha o Base e o Standard selecionados e escolha os plugins que deseja instalar (podem ser adicionados depois da instalação também).

9. Aguarde o processo de instalação de clique em Next

10. A primeira opção cria um atalho no menu iniciar do sistema. Caso queira que seja criado um atalho na área de trabalho marque também a segunda opção. Clique em Next.

11. Seu Squirrel SQL esta instalado.

Configuração (DB2)

Iremos configurar o Squirrel SQL para conectar a uma base de dados DB2, para isso e necessário que  haja um client DB2 instalado na maquina.

1. Abra o Squirrel e selecione a opção Drivers.

2.  Localize na lista de Drivers o “IBM DB2 App Driver”,  e dê um duplo clique nele para editar suas configurações. Preencha o formulário com as informações abaixo:
Name: IBM DB2 App Driver
Exemple URL: jdbc:db2:<dbname>
Web Site URL: http://www-306.ibm.com/software/data/db2

Class Name: com.ibm.db2.jcc.DB2Driver

Extra Class Patch:
/opt/IBM/db2/V9.7/java/db2jcc.jar
/opt/IBM/db2/V9.7/java/db2jcc_license_cu.jar
/opt/IBM/db2/V9.7/java/db2jcc_license_cisuz.jar


Utilize o botão Add para adicionar as classes

Após preencher todos os dados, selecione OK. Caso queira utilize o botão Show Loaded Drivers Only para exibir apensa os drivers configurados.

Pronto, o seu Squirrel SQL já esta com o Driver DB2 configurado, agora vamos adicionar uma conexão com um banco de dados.

1. No menu a esquerda clique em Aliases e depois no sinal “+”.

2.  Na tela que abrir insira um nome para a conexão, selecione um Driver, e preencha o usuário e a senha de acesso ao banco.

3. Selecione o botão Properties para configurar algumas variáveis da conexão. Em Driver Properties, habilite a opção “Use driver properties” e depois clique com o botão direito em uma das linhas e selecione Add Property:

Irá abrir uma janela para você preencher as informações:
Property Name: retrieveMessagesFromServerOnGetMessage
Property Value: true
Selecione o botão Add:

Selecione a opção Specify para a nova linha inserida e depois clique em OK
Essa nova linha garante que o DB2 retorno uma mensagem com a descrição do erro encontrado em uma instrução SQL.

4.Selecione o botão Test para verificar se esta funcionando.

Acione o botão Connect para realizar a conexão com o banco de dados.

Será exibida uma mensagem informando que a conexão foi realizada com sucesso.

Pronto sua conexão com o banco de dados foi criada com sucesso! Para criar outras conexões DB2 você pode duplicar essa que você criou e alterar apenas as informações de conexão.

Instalando e configurando o IBM InfoSphere Data Architect

IBM InfoSphere Data Architect é uma solução de design de dados colaborativa. Ele permite descobrir, modelar, relacionar, padronizar e integrar ativos de dados distribuídos em toda a empresa. Inclui o suporte para tabelas organizadas em colunas e pode oferecer um melhor entendimento dos ativos de dados atuais, para ajudar a aumentar a eficiência e reduzir o tempo de comercialização.
A instalação do IBM InfoSphere Data Architect pode ser feita no Windows ou no Linux, porem o produto (interface) se comporta melhor no Windows, por isso minha recomendação pessoal é que seja utilizado nesse Sistema Operacional.

Instalação

1. Descompacte o arquivo INFO_DATA_ARCH_V9.1.1_FOR_WIN_ML.zip para ter acesso aos arquivos de instalação do IBM InfoSphere Data Architect 9.1.1
2. Execute o arquivo setup.exe para iniciar a instalação

3. O programa de instalação irá apresentar diversas informações sobre o produto, porem para iniciar a instalação selecione a opção “Instalação Administrativa”

4. Será aberto o IBM Installation Manager, se for sua primeira instalação de produto IBM, será necessário instalar também o IBM Installation Manager. Mantenha as opções selecionadas e clique em Next.
Exibindo noname

5. Será necessário aceitar as informações de licença do produto, clique em “I accept the terms in the license agreements” e depois em Next

6. Selecione os diretórios onde deseja armazenar as informações do IBM Installation Manager e os arquivos compartilhados:

7. Faça o mesmo para os dados do IBM InfoSphere Data Architect, selecionando também a arquitetura

8. Selecione os pacotes de linguagem desejados.

9. Selecione as funcionalidades que deseja instalar (recomendo que seja mantido o padrão).

10. Mantenha a opção de ajuda via Web ativa e clique em Next.

11. Será apresentada uma tela com os dados selecionados para que você realize uma revisão, clique no botão Install e aguarde o processo.

12. Pronto, seu produto já foi instalado com sucesso, se seguir a opção padrão o IBM InfoSphere Data Architect será executado quando você apertar o botão Finish.

Configuração para modelagem de dados

1. Ao executar o IBM Data Architect você será questionado quanto ao caminho do seu workspace, selecione o caminho de sua preferência.

2. No menu Window selecione a opção Open Perspective e altere para Modeling (por padrão ele vem como Data).

Pronto, seu ambiente já esta instalado e configurado!

Remover ^M de arquivos no VI

Quando transportamos um arquivo do Windows para o Unix e o editamos no VI, muitas vezes encontramos aqueles ^M no final de cada linha. No meu caso gerei um DML via script e ele ficou repleto desses caracteres, impossibilitando o processamento.

Isso acontece pois no DOS/Windows o <enter> é representado por 2 caracteres (retorno de cursor e quebra de linha) enquanto no Linux ele é representado apenas pela quebra de linha.

Pois bem, se nós usarmos o comando “<Esc>+/^M” (sem as aspas) o vi irá procurar por linhas que comecem com a letra M, pois isso é uma expressão regular e o caractere “^” representa início de linha.

A forma correta a se usar seria a seguinte “<Esc>+/<Ctrl>V<Ctrl>M“, assim iremos achar todos os ^M que desejamos no final das linhas.

Porém o nosso objetivo aqui não é simplesmente achar os ^M e sim retirá-los, portanto iremos usar o seguinte comando “<Esc>:%s/\r//g“, assim iremos substituir todas as ocorrências do ^M até o final do arquivo.

Dica de leitura – Tecnologia e Projeto de Data Warehouse

Para aqueles que pretendem trabalhar na área de Business Intelligence e buscam uma leitura simples, que esteja em seu idioma nativo (português) o livro ‘Tecnologia e Projeto de Data Warehouse’ de ‘Felipe Nery R. Machado’ é uma ótima opção.

Tecnologia e projeto de Data Warehouse

 

Além de abordar os principais assuntos relacionados a BI, o livro traz alguns casos de estudo para que o leitor consiga entender como os conceitos apresentados são aplicados.

Algumas informações sobre o livro:

Autor(es): Felipe Nery Rodrigues Machado
I.S.B.N.: 978-85-365-0012-6
Edição:
Ano: 2013
N. Páginas: 320
Formato: 17 x 24 cm
Peso: 0,520 Kg

Sinopse

A tecnologia Data Warehousing (processo de fazer Data Warehouse) é considerada a evolução natural do Ambiente de Apoio à Decisão. Sua crescente utilização pelas empresas está relacionada à necessidade de dominar informações estratégicas para garantir respostas e ações rápidas, assegurando a competitividade de um mercado altamente mutável.

Com uma apresentação técnica diferenciada, embasada na experiência em processos de Data Warehousing, o professor e consultor Felipe Machado passa seu conhecimento, neste livro, com linguagem simples e objetiva, o que permite a compreensão gradativa e efetiva das técnicas. Com essa nova forma de pensar, enfatizando a importância e o formato dos processos tecnológicos inerentes a essa arquitetura, tais como ETL e gestão de metadados, o Data Warehousing transforma-se em um processo menos complicado.

Destacando aspectos conceituais e a orientação à gestão de negócios, a obra traz exemplos e estudos de caso, introduzindo as características do ambiente de Data Warehouse, seus componentes e papéis. Mostra, ainda, os processos e as ferramentas dessa tecnologia.

Apresenta as necessidades e motivações para o uso desse recurso, além do CRM (Customer Relationship Management), explicando como realizar Business Intelligence (BI) e a importância da modelagem multidimensional.

Explica a granularidade de dados e seus níveis, a modelagem de dados, entidades, relacionamentos, atributos, restrições de integridade e traz tópicos avançados em modelo E-R. Descreve o recurso OLAP (OnLine Analytical Processing) e suas operações básicas, os modelos star e snowflake, elementos básicos de fatos e medidas, o projeto físico e as dimensões.

Um estudo de caso mostra o sistema atual, as necessidades executivas, a identificação do fato e as estruturas possíveis. Outro estudo de caso consiste em um hotel e seus serviços, dimensões e o modelo final, além de um terceiro estudo de caso sobre administração de clínicas médicas.

O livro destina-se àqueles que já possuem alguma experiência em modelagem de dados, necessitam aprimorar conhecimentos e implementar um ambiente de Data Warehouse, considerando-se a versão 2008 do SQL Analisys Server e os conceitos estratégicos de BI Competence Center.

Na sexta edição, são apresentadas definições e tecnologias de Big Data e sua correlação com Data Warehouse, para que o leitor sempre acompanhe um padrão de conteúdo atualizado de tecnologias.

Links relacionados:

DB2 – Realizando INSERT com o resultado de um SELECT

Essa é uma forma de inserir dados muito útil, que pode simplificar muito seu código.
Vou dar um exemplo:

Imagine que você precisa abrir um registro de RCA (Root cause analysis) para cada desvio de processo. Você já possui um Data Warehouse onde há todos os processos gravados (tanto os finalizados com sucesso quanto os com desvio). Esses RCA’s são armazenados em uma tabela em seu banco de dados.
Dessa forma, utilizando a dica desse post,  você pode criar uma rotina para a partir de alguns dados chave do seu Data Warehouse (mais associações com tabelas auxiliares) realizar a abertura automática de RCA’s para os devidos owners.

Vamos ver qual a sintaxe do SQL:

<strong>INSERT INTO</strong> SCHEMA_X_NAME.TABLE_NAME_INSERT
     (EMPNUMBER, PROJNUMBER, STARTDATE, ENDDATE)
  <strong>SELECT</strong> EMPNO, PROJNO, EMSTDATE, EMENDATE
    <strong>FROM</strong> SCHEMA_Y_NAME.NAME_SELECT

No caso o INSERT seria feito na tabela SCHEMA_X_NAME.TABLE_NAME_INSERT a partir dos dados da tabela SCHEMA_Y_NAME.NAME_SELECT.

O comando é bem simples, eu mesmo já utilizei diversas vezes.
Espero ter ajudado, qualquer dúvida deixem um comentário.
Obrigado.

DB2 – Calcular a diferença entre duas datas

Muitas vezes precisamos calcular a diferença entre duas datas, porem uma simples subtração não resolve o nosso problema. Para tanto devemos utilizar a função TIMESTAMPDIFF do DB2, funcionando da seguinte forma:

&gt;&gt;-TIMESTAMPDIFF--(--expression--,--expression--)--------------&gt;&lt;

No caso o primeiro parâmetro é um número que indica qual será o formato do resultado (dias, minutos, semanas, …), seguindo a seguinte tabela:

1 Fractions of a second
2 Seconds
4 Minutes
8 Hours
16 Days
32 Weeks
64 Months
128 Quarters
256 Years

O segundo parâmetro é onde será adicionada sua expressão, ou seja onde você fará a subtração entre datas:

DATA_HORA_FECHAMENTO - DATA_HORA_ABERTURA

Para finalizar segue um exemplo de como ficaria a consulta SLQ utilizando a função:
SELECT  TIMESTAMPDIFF(4, DATA_HORA_FECHAMENTO - DATA_HORA_ABERTURA)
    FROM YOUR_SCHEMA.YOUR_TABLE
GO

No caso o retorno será a diferença entre a data hora de fechamento e a data hora de abertura, sendo retornado em minutos, já que utilizamos o parâmetro 4.

O DB2 utiliza a seguinte regra para fazer os cálculos:

  • There are 365 days in a year.
  • There are 30 days in a month.
  • There are 24 hours in a day.
  • There are 60 minutes in an hour.
  • There are 60 seconds in a minute.

Espero ter ajudado, qualquer dúvida deixem um comentário.
Obrigado.

Removendo registros duplicados em uma tabela

Muitas vezes nos deparamos com a necessidade de remover registros duplicados em uma determinada tabela do Banco de Dados. No caso que vou compartilhar com vocês comparamos os registros mantendo apenas o registro mais antigo na base.

Considerando

SCHEMA_NAME: Nome do seu Schema no banco de dados;
TABLE_NAME: Nome da tabela onde temos os registros duplicados;
CAMPO_A_TIMESTAMP: Campo (DATE ou TIMESTAMP) que iremos utilizar de parâmetro para verificar qual o registro mais antigo;
CHAVE: Campo que indica o numero do registro duplicado (código do produto, numero do incidente, …);

Temo o seguinte SQL

DELETE
FROM <strong>SCHEMA_NAME</strong>.<strong>TABLE_NAME</strong> A
WHERE
<strong>CAMPO_A_TIMESTAMP</strong> &gt;
(SELECT MIN(<strong>CAMPO_A_TIMESTAMP</strong>)
FROM <strong>SCHEMA_NAME</strong>.<strong>TABLE_NAME</strong> B
WHERE A.<strong>CHAVE</strong> = B.<strong>CHAVE</strong>)

Espero que a dica tenha sido útil, caso tenham alguma dúvida é só deixar um comentário. Obrigado.

Como descobrir qual a distribuição / versão de Linux rodando em um servidor

Essa é uma dúvida muito comum, pois muitas pessoas acham que a unica forma é utilizando o comando uname -a que não traz as informações desejadas. Se utilizarmos o comando uname -a teremos uma saída semelhante a essa:

antonioc@hows001pmc:~&gt; uname -a
Linux hows001pmc 2.6.16.60-0.103.1-default #1 SMP Thu May 16 19:52:34 UTC 2013 s390x s390x s390x GNU/Linux

Vejam que não fica claro qual a distribuição / versão do nosso linux, porem temos uma forma melhor para resolver esse problema, podemos ler o arquivo /etc/*release (cat /etc/*release), vejam:

antonioc@hows001pmc:~&gt; cat /etc/*release
SUSE Linux Enterprise Server 10 (s390x)
VERSION = 10
PATCHLEVEL = 4

Agora sabemos que o meu SO é SUSE Linux Enterprise Server 10.

Entendendo o Método Científico

Na maioria das vezes nós não nos damos conta, mas aplicamos ao menos parte do método científico no nosso dia-a-dia e também no nosso trabalho. Ele nos ajuda a resolver os problemas e a fornecer argumentações e informação justificada quando necessário. Mas o que é o método científico e por que é importante conhecê-lo?
O método científico é um conjunto de técnicas para a investigação dos fenômenos que nos cercam, para deles podermos gerar novos conhecimentos ou ajustar e corrigir o que já sabemos. É um esforço empírico com base em evidências mensuráveis. E embora as especificidades variem de área para área de conhecimento, pode-se identificar dois elementos comuns que conferem a sua forma geral. Esses elementos básicos são as hipóteses e os testes dessas hipóteses.

Uma hipótese é uma formulação provisória, com intenções de ser posteriormente demonstrada ou verificada, constituindo uma suposição admissível.

Ao observar um fenômeno, um cientista propõe uma ou mais hipóteses para explicá-lo. As hipóteses não surgem do nada, mas vêm daquilo que já se conhece sobre o fenômeno (ou fenômenos parecidos) e seguem também uma análise de plausibilidade. Com as hipóteses, o cientista então propõe testes para validá-las ou refutá-las. Os testes devem ser passíveis de repetição por outros cientistas, para verificação independente, e devem ser os mais objetivos e controlados possíveis para evitar tendenciosidade nos resultados. As hipóteses também geram previsões, por exemplo, se elas forem verdadeiras, então espera-se observar certos valores, comportamentos ou novos fatos sobre o fenômeno. Essas previsões, por sua vez, podem ser confirmadas com mais testes e observações, tornando a pesquisa ainda mais fundamentada.

Esse processo culmina quando fornece uma teoria. Na ciência, o significado da palavra teoria é diferente do seu uso geral. Coloquialmente, uma teoria é um “palpite” sobre a explicação de algo, mas sem necessidade de maiores confirmações. Cientificamente, uma teoria é muito mais, compondo-se de um corpo de conhecimento estabelecido e bem suportado pelas evidências disponíveis. Exemplos de teorias científicas conhecidas são a da evolução das espécies de Charles Darwin e a da relatividade de AlbertEinstein, que até hoje fornecem explicações verificáveis para uma vasta gama de fenômenos naturais mesmo frente aos mais novos testes a que são submetidas.

Claro, nem toda pesquisa termina com uma teoria totalmente nova, mas pode propor ajustes ao conhecimento existente, confirmar aspectos novos de uma teoria ou mesmo mostrar que conceitos importantes, à luz de novos dados, são na verdade incorretos (vide o caso do éter, o meio proposto para a propagação da luz, refutado no famoso experimento de Michelson-Morley em 1887).

Em nosso trabalho frequentemente nos deparamos com situações que pedem uma análise apurada para serem resolvidas e são nesses momentos em que nossas habilidades, como o pensamento crítico, são mais requisitadas. A elaboração de hipóteses e seus testes frente ao problema que se apresenta formam o cerne de nosso processo investigativo. Além disso, é possível traçar uma relação direta entre o que fazemos para resolver nossos desafios profissionais e os elementos do método científico. Portanto, conhecendo mais a fundo o método temos a oportunidade de melhorar os resultados de nosso trabalho. E isso é refletido em todos os fatores que deles derivam, como por exemplo a satisfação final do cliente. Um exemplo dessa aplicação talvez seja em times de suporte à produção, nos quais a análise e resolução rápidas e acertadas de um problema podem fazer a diferença entre o sucesso ou fracasso de um projeto.

O método científico tem a capacidade de melhorar nosso trabalho e suas lições têm grande abrangência e utilização imediata. Portanto vale a pena conhecê-lo e aplicá-lo.

Links úteis: