A idéia deste post é mostrar as extensões que mais uso no meu dia a dia como Data Engineer, e que acho que podem ser úteis para vocês.

Caso ainda não tenha o VS Code instalado acesse este site https://code.visualstudio.com/ e baixe a versão correta para o seu OS. A instalação é Next Next Finish.

Em minha opinião uma das melhores coisas do VS Code é a possibilidade de adicionar features a ele através de extensions. O texto abaixo resume muito bem o que são as extensions no VS Code.

“The features that Visual Studio Code includes out-of-the-box are just the start. VS Code extensions let you add languages, debuggers, and tools to your installation to support your development workflow.”

https://code.visualstudio.com/docs/editor/extension-gallery

Os exemplos deste artigo levam em consideração que você possui instalados

· Python 3

· PowerShell

· VS Code

Instalação

Para instalar, administrar ou usar qualquer extensão do VS Code siga os passos deste link:

https://code.visualstudio.com/docs/editor/extension-gallery

Extensões

A seguir irei falar sobre a lista das extensões que mais uso e falar um pouco sobre cada uma. A ordem não necessariamente indica os que mais uso.

1 – Code Runner

Engine que permite executar scripts em diferentes linguagens usando a mesma experiência (shortcuts, formatação, etc.). Esta é uma das primeiras que eu instalo.

Com ela podemos, por exemplo, configurar para que o VS Code sempre faça um clear no output antes de cada execução. Esta configuração limpa o resultado de execuções anteriores, tornando o mais clean.

clip_image002

Para executar seu código no VS Code usando o code runner você pode usar o atalho ctrl + shift + n, independente da linguagem que esteja utilizando.

Irei mostrar como configurar / usar esta extensão após instalar a extensão Python.

2 – Python

Precisa nem falar que Python é a linguagem mais usada na área de dados né?

Eu uso Python praticamente todos os dias, desde AWS Lambda Functions até script para criar usuários no Azure SQL DB.

Esta extensão permite trabalhar com código Python dentro do VS Code com features como debug, linting, intellisense, Jupyter, etc.

Irei detalhar como instalar / configurar esta extensão, visto que, é necessário realizar algumas configurações após a instalação.

clip_image004

Pylint

Neste passo iremos habilitar o pylint no VS Code. Pylint faz verificações como: erros no código, padrão universal de codificação, etc. Na minha opinião é essencial para ter um bom padrão de codificação.

Mais informações sobre o Pylint aqui. https://pypi.org/project/pylint/

clip_image006

clip_image008

clip_image010

Basicamente o que a Command Pallet to VS Code faz é executar este comando pip no terminal, que vai instalar o pacote Python chamado Pylint, apenas para o usuário atual.

clip_image012

Autopep8

Outro pacote Python muito comum é o autopep8. Este pacote formata nosso código Python de forma automática seguindo os padrões definidos aqui https://www.python.org/dev/peps/pep-0008/

Para instalar o autopep8 escreva o comando abaixo no terminal do VS Code e tecle enter.

clip_image014

Configurando o VS Code

Agora iremos configurar o VS Code para usar os pacotes instalados.

clip_image016

No passo abaixo estamos instruindo o VS Code a formatar nosso código todas as vezes que você salvar o arquivo. No caso de código Python ele vai usar o autopep8.

clip_image018

Por fim, no passo abaixo estamos configurando o VS Code para salvar o arquivo atual antes de cada execução do Code Runner.

Isso evita que você tenha que salvar o arquivo antes de cada execução.

clip_image020

Jupyter

De forma bem simples Jupyter permite que você use texto e código Python em uma espécie de documento (web app) chamada notebook. Seria mais ou menos como ter um arquivo do Word onde parte do conteúdo fosse descrição do código e outra parte, dentro do mesmo arquivo, fosse código executável.

Veja mais sobre notebooks aqui https://jupyter.org/

No exemplo abaixo iremos criar um notebook usando Jupyter.

Feche o VS Code.

Abra o cmd como admin e instale o Jupyter package executando o comando abaixo:

pip install jupyter

Abra o VS Code e na Command Palette digite Jupyter.

clip_image022

VS Code vai iniciar um Jupyter Server localmente e irá abrir esta página

clip_image024

Na imagem acima “1” você pode criar novas “cell”. Uma cell é um espaço na página onde especificamos se iremos usar código (Python) ou descrição (Texto).

Em “2” você tem a opção de alternar o tipo de “cell” entre Code ou Text.

Em “3” você tem o botão “Run”, que só aparece quando o tipo de cell for code.

Em “4” você pode ver o server e Python Interpreter selecionado.

Já a imagem abaixo mostra um exemplo do mesmo Jupyter Notebook, porém agora com mais cells.

clip_image026

Acima temos 3 cells, a primeira “1” Texto, a segunda “2” Code e a terceira “3” Texto.

Caso você tenha várias cells é possível executar todas usando a opção “4”.

Neste último exemplo temos duas cells. Uma Text e outra com code que imprime os 5 primeiros registros de um CSV usando Pandas.

clip_image028

Note que se você NÃO estivesse usando Jupyter seria necessário usar print(df.head())

3 – Data Preview

Esta extension é excelente quando você precisa realizar uma análise rápida em datasets em formatos CSV, JSON, Avro, etc. Nela você consegue visualizar, filtrar, exibir dados em gráficos, agrupar, etc. Tudo de forma simples e rápida.

clip_image030

Irei usar como source os arquivo CSV /JSON extraídos deste site: https://ourworldindata.org/coronavirus-source-data

Para usar esta extensão simplesmente vá para a command palette do VS Code (https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette) em View / Command Palette e então selecione/escreva “Data: Preview Data”.

clip_image032

A ferramenta é quase um Power BI do VS Code hehe. Note abaixo que no lado esquerdo “1” podemos selecionar o tipo de gráfico, neste caso GRID, bem como os campos que serão exibidos no gráfico “2”

Na parte superior podemos agrupar os dados “3”, realizar split e ordenar por “4”. Bem como, filtrar ”5”.

Na área principal podemos visualizar os dados “6”.

clip_image034

Abaixo podemos ver mais um exemplo. Neste caso usando gráfico de barras, filtro inteligente e agrupamento

clip_image036

Neste outro exemplo estamos usando um JSON obtido do site supracitado. Note que de forma muito inteligente ele transforma um array de json em uma tabela

clip_image038

clip_image040

É uma extension essencial no meu dia a dia.

4 – PowerShell

Quem me conhece sabe que uso Posh desde quando ele foi lançado e curto bastante. Muitas tarefas administrativas do Azure eu faço em PowerShell. Além de várias relacionadas ao SQL Server / Windows.

Falando em Posh + SQL recomendo DBATools https://dbatools.io/.

A imagem abaixo mostra o resultado de um script PowerShell “3” no VS Code, SEM usar Code Runner.

clip_image042

Note que o comando foi executado três vezes, sem usar cls/clear-host “2”, e os resultados das execuções anteriores continuam no terminal. Isso se dá porque não usamos o Code Runner.

Se executarmos novamente este código por três vezes, usando o Code Runner “1”, o terminal exibirá apenas o resultado da última execução.

Na imagem abaixo note que o resultado agora está na tab “Output” e não mais na tab “Terminal”

clip_image044

5 – SQL Server

Nem precisa falar muito sobre né?

clip_image046

Vamos criar uma conexão a um Azure SQL DB que tenho de exemplos:

clip_image048

Especifique um DB name. No meu caso irei deixar em branco pois estou usando um SQL Login (admin) e não um contained user.

clip_image050

Escolha o Authentication Method. SQL Login no meu caso.

clip_image052

Informe user e senha

clip_image054

Deixe esta opção em branco

clip_image056

Pronto. Agora você pode realizar consultas ao SQL Server diretamente do VS Code.

clip_image058

Uma feature interessate em minha opinião é o query history, que você pode ver la barra lateral esquerda/inferior da imagem acima.

6 – Azure Tools

Esta não é uma simples extension e sim um conjunto de extensions instalado de uma vez.

clip_image060

Note que ela possui um Extension Pack incluindo extensions como Azure CLI, Azure Functions, etc.

Após instalada a primeira coisa que temos que fazer é login na nossa conta Azure.

clip_image062

Veja agora que já podemos visualizar nossos Azure Resources diretamente do VS Code

clip_image064

Abaixo falo um pouco sobre como usar algumas extensions incluídas na Azure Tools.

Extension: Azure CLI

O texto abaixo resume bem o que é Azure CLI

“The Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation.”

https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest

Você pode usar este link para baixar o instalador https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?view=azure-cli-latest&tabs=azure-cli#azure-cli-current-version

Instalação é NNF.

O código abaixo lista todos os DBs de um determinado server, usando as credencias já salvas na Azure extension. Note que não preciso passar informações de login no código.

Note que a linguagem selecionada é Azure CLI Scrapbook. Para executar o código clique na linha com o botão direito e então “Execute Line in Editor”. O resultado é exibido na tab a direita.

clip_image066

Entre outras features esta extension também mostra informações sobre métodos

clip_image067

Extension: Azure Function

Neste exemplo irei criar uma Azure Function (Python) usando minha Function App chamada “func-tst-example-eastus2”.

Primeiro vamos instalar os requisitos.

Baixa e instale o Node JS https://nodejs.org/en/download/. A instalação é NNF.

Instale o pacote para trabalhar com Azure Functions. Para isso abra o CMD como admin e execute o código abaixo:

pip install azure-functions

Crie um novo projeto

clip_image068

Selecione a linguagem

clip_image070

Selecione o interpreter

clip_image072

Selecione o template. Frequentemente eu uso Azure Functions para capturar eventos de Event Hub ou Azure Blob Storage. Neste exemplo vamos criar algo mais simples.

clip_image074

Dê um nome

clip_image076

Selecione o schedule (cron)

clip_image078

Pronto. Agora você tem uma Azure Function pronta para uso.

clip_image080

Você pode seguir os passos abaixo para realizar o deploy

clip_image082

7 – AWS

Assim como no Azure esta extension para AWS é um conjunto. Neste caso chamado “AWS Toolkit for Visual Studio Code”

clip_image084

“The AWS Toolkit for Visual Studio Code is an open source plug-in for the Visual Studio Code that makes it easier to create, debug, and deploy applications on Amazon Web Services. With the AWS Toolkit for Visual Studio Code, you will be able to get started faster and be more productive when building applications with Visual Studio Code on AWS. The toolkit provides an integrated experience for developing serverless applications, including assistance for getting started, step-through debugging, and deploying from the IDE.”

https://aws.amazon.com/visualstudiocode/

Após instalada iremos fazer login

clip_image085

No canto inferior direito a mensagem seguinte será exibida. Clique em Yes.

clip_image086

Escolha um nome para seu profile

clip_image087

Informe sua Access Key e Secret

clip_image088

clip_image089

Selecione o profile no canto inferior direito

clip_image090

Adicione uma region

clip_image091

No meu caso US East

clip_image092

E pronto. Assim como no Azure agora você tem o AWS configurado e pronto para uso no VS Code

clip_image093

8 – Settings Sync

Bom. Imagine que após configurar todas estas extensions e demais configurações do VS Code você precisou trocar de Laptop. Ou então precisa acessar seu VS Code em outro laptop. Realizar todas as configurações novamente seria péssimo.

É aí onde entra a extension “Settings Sync”. Com ela você pode usar sua conta GitHub para armazenar suas configurações, extensions, etc. e então sincronizar entre várias estações de trabalho.

clip_image095

Após instalada a seguinte tela será exibida:

clip_image097

O primeiro passo é realizar login no GitHub:

clip_image099

Autorize o App

clip_image101

Um Gist https://help.github.com/en/enterprise/2.13/user/articles/about-gists será criado quando você fizer o primeiro upload. Faça um skip.

clip_image103

Na Command Palette acesse as configurações do Sync

clip_image105

Selecione as opções abaixo:

clip_image107

Feche a abra o VS Code

Vá para sua página no GitHub e veja o Gist criado. Basicamente este Gist armazena as suas configurações do VS Code. Uma feature interessante é que você pode compartilhar este Gist com outros usuários. Assim eles podem deixar o VS Code deles igual ao seu sem ter que instalar nada. Isso é o máximo não?

clip_image109

Voltando ao VS Code acesse as a Command Palette conforme abaixo:

clip_image111

Note que a extension adicionou estas configurações ao seu Gist.

Volte ao GitHub e acesse as configurações do Gist

clip_image113

A extension basicamente salva no seu GitHub vários arquivos JSON com as configurações das suas extensions, etc.

clip_image115

Note que as propriedades que alteramos no Code Runner estão no JSON

clip_image117

Com isso finalizamos este post.

Em breve farei um outro post sobre VS Code com algumas extensions/configurações que não uso no dia a dia, porém são bastante úteis.

Um amigo também me recomendou esta extension https://marketplace.visualstudio.com/items?itemName=msrvida.vscode-sanddance. Fiquei curioso. Em breve farei um post sobre as demais, incluindo-a.

Bom pessoal é isso. Espero que tenham gostado.

Abraço e muita cerveja boa 😀

DBA de WhatsApp

Publicado: 18 de janeiro de 2020 em Power BI

Recentemente o amigo Ricardo Portilho Proni postou um artigo bem interessante sobre DBA de WhatsApp, o qual gostei bastante. Comecei a pensar sobre e decidi sair da maioria dos grupos por alguns motivos

1- As pessoas perguntam algo que poderia ser achado facilmente no Google

2- Muita gente tenta responder da forma mais rápida possível para ser “o cara que respondeu”. Ainda que não seja a melhor resposta. E ao final o grupo fica cheio de mensagens.

3- Tem muito, muito conteúdo de propaganda. Tipo, é muito comum algumas pessoas estarem no grupo apenas para divulgar conteúdo (blog post, curso, etc)

Não vejo problema em anúncios mas se o grupo é de Windows qual o sentido de ter uma pessoa que nunca ajuda e apenas posta sobre treinamentos na área de Java ou qualquer outro assunto que não seja Windows?

4- Existem formas muito melhores de agregar conhecimento: Pluralsight, blogs como SQLSkills etc.

Claro que existem várias pessoas que ajudam bastante e tentam dar o máximo que o grupo seja algo de valor mas infelizmente, pelo menos para mim, é muito difícil acompanhar grupos com dezenas ou centenas de pessoas onde alguém chega e pergunta como ver a versão do SQL Server

Abraço

Demetrio Silva

Azure Notebooks

Publicado: 16 de maio de 2019 em Microsoft, Power BI, Python
Tags:

Fala galera blz?

Estou um pouco afastado do blog devido a algumas demandas.

Com este post rápido eu gostaria de mostrar a vocês uma funcionalidade muito interessante do Azure chamada Azure Notebooks, que basicamente lhe dá acesso free à plataforma Jupyter Notebooks online.

Não irei discutir sobre o que é o Jupyter, caso tenha mais interesse sugiro uma lida neste site: https://jupyter.org/

Basicamente com esta funcionalidade nós conseguimos executar códigos Python/R. Com a vantagem, neste caso, de estar tudo integrado ao Azure.

Bom, vamos deixar de conversa fiada e vamos aos passos da configuração.

Entre no site abaixo e faça login com sua conta Microsoft

image

Em seguida acesse os seus projetos

image

Crie um novo projeto

image

image

Com o projeto já criado é a hora de criar um Notebook

image

image

Note que o cluster está com status stopped. Clique em Run on free compute para iniciar o mesmo.

image

Isso o levará para a tela a seguir. Clique no arquivo com extensão ipynb.

image

Basta clicar no botão abaixo. E seu notebook estará pronto para uso.

image

O notebook acima possui apenas uma sessão. Vamos criar mais duas sessões clicando no botão “+” 2 vezes

image

Na imagem acima notem que foram adicionadas 2 sessões, resultando em 3 ao total. O que indica se a sessão é apenas um texto informativo ou se roda código Python é o combobox circulado acima. Clique na sessão do meio e altere o combobox para Markdown.

image

Em seguida, digite uma descrição para esta sessão. Esta sessão é apenas um texto/documentação do projeto. Não é tratada como código.

image

Vamos testar um exemplo simples de como ler um arquivo CSV. Neste caso, irei analisar distribuição da população nos estados de U.S.

Segue link para CSV que será usado: https://github.com/jakevdp/data-USstates/blob/master/state-population.csv

Código e resultado abaixo.

Explicando o código abaixo.

Na primeira sessão importados a biblioteca Pandas, que é especializada em dados.

Na segunda sessão temos uma documentação do nosso código.

Na terceira sessão usamos o método read_csv para ler o csv e então exibimos o Dataframe na tela. Super simples.

image

Gostou? Fica ligado que irei postar mais coisas relacionadas a isso em breve. Tenho muita coisa nova para compartilhar.

Abraço,
Demétrio Silva

Power BI for MAC

Publicado: 6 de março de 2019 em Power BI
Tags:

Ola pessoal tudo bom?

Em um grupo do WhatsApp que participo um amigo perguntou hoje sobre Power BI Desktop para MAC.

A resposta é que não existe e também não está planejado, ou seja, a Microsoft não tem intenção de fazer isso. A principal razão é que internamente o Power BI Desktop executa uma versão light do SSAS Tabular e não seria tão fácil portar isso.

Veja mais detalhes aqui https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/7546645-power-bi-designer-for-mac

Abraço,

Demétrio Silva

Customizar o menú help no PBI

Publicado: 22 de fevereiro de 2019 em Power BI
Tags:,

Olá pessoal tudo bom?

Passando rápido para avisar que agora é possível customizar o menú de ajuda do Power BI de acordo com links de seu interesse.

111111111

Abraço,

Demetrio Silva

Fala galera posta rápido para mostrar a vocês como resolver um erro ao tentar instalar o Gateway.

Ao tentar instalar o gateway o seguinte erro pode aparecer:

Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: PowerBIGatewayInstaller.exe
Problem Signature 02: 14.16.6464.1
Problem Signature 03: 59c0a4e1
Problem Signature 04: PowerBIGatewayInstaller
Problem Signature 05: 14.16.6464.1
Problem Signature 06: 59c0a4e1
Problem Signature 07: 3c
Problem Signature 08: 1d

Este erro indica a falta do .NET 4.6. Para resolver basta instalar este update: https://www.microsoft.com/en-us/download/details.aspx?id=53344 e em seguida você conseguirá instalar o Gateway sem problemas.

Abraço,

Demetrio Silva

Ola pessoal tudo bom?

Post rápido apenas para deixar aqui um link sobre o que está por vir ao Power BI no próximo ano

https://powerbi.microsoft.com/en-us/roadmap/

Abraço

Demétrio Silva

Fala galera blz?

Está com problemas de performance no seu relatório do Power BI? Demora para atualizar? Suas fórmulas e processamento estão lentos?

Existem diversas formas de otimizar, cada cenário é diferente. Irei mostrar um exemplo de otimização que fizemos em um cliente.

Cliente possuia a base ROLAP (modelado com dimensões e fato porém armazenado em estrutura relacional, neste caso, SQL Server) e necessitava de performance e uso de Rowl Level Security (filtrar dados de acordo com o que o usuário pode ou não visualizar.).

Criamos um projeto para usar direct query usando uma instância do SSAS Tabular e a reposta é simplesmente imediata, mesmo em relatórios complexos.

Veja a compressão do modelo tabular a direita, usand.

Tamanho da base Tabular: 213 MB

Tamanho da base relacional: 7100 MB

Uma redução impressionante de tamanho e alto ganho de performance. 

image

Agora entendem quando falo que BI não é apenas “cara que sabe mexer com Excel / Power BI” ? Há muita coisa além do que criar fórmulas no Power BI Desktop.

Abraço,

Demétrio Silva

Power BI dica do dia.

Antes de criar um relatório pense se realmente ele será útil.

Muito tempo é perdido com relatórios que não geram valor algum.

Por exemplo, avalie se realmente o tempo gasto para criar um relatório que exibe os sentimentos dos usuários no Twitter será útil para sua empresa. Será de valor ou eu estou apenas criando porque vi no YouTube?

BI vai muito além de relatórios bonitinhos.

Abraço

Demétrio Silva