Skip to content

Instantly share code, notes, and snippets.

@jhoneill
Created November 20, 2020 18:20
Show Gist options
  • Save jhoneill/7f27ff9a7f00945fea900d9a656613de to your computer and use it in GitHub Desktop.
Save jhoneill/7f27ff9a7f00945fea900d9a656613de to your computer and use it in GitHub Desktop.
Accessing data with the GetSQL module
Display the source blob
Display the rendered blob
Raw
{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Load module, check version " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "#!about\n", "ipmo GetSQL" ], "outputs": [ { "output_type": "execute_result", "data": { "text/html": "<table><tbody><tr><td><img src=\"data:image/png;base64, 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\" width=\"125em\"></img></td><td style=\"line-height:.8em\"><p style=\"font-size:1.5em\"><b>.NET Interactive</b></p><p>&#169; 2020 Microsoft Corporation</p><p><b>Version: </b>1.0.156101+537f46e89a1690a55315d805eb90a5877aff9de2</p><p><b>Build date: </b>2020-11-13T14:17:23.6957662Z</p><p><a href=\"https://github.com/dotnet/interactive\">https://github.com/dotnet/interactive</a></p></td></tr></tbody></table>" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connect and get list tables. \n", "If you want the Formula One data it is [avilable via onedrive](https://1drv.ms/x/s!AhfYu7-CJv4ekIYof6dcHtojh08zKg?e=C3yhl6 )\n", "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "Get-SQL -Excel -Connection ~\\OneDrive\\public\\f1\\f1Results.xlsx -ShowTables | Out-String" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "[Analysis$]\r\n['Engine Aliases$']\r\n[f1drivers$]\r\n[f1drivers$_xlnm#_FilterDatabase]\r\n[f1races$]\r\n[f1races$_xlnm#_FilterDatabase]\r\n[Help$]\r\n[Records$]\r\n[Results$]\r\n[Results$_xlnm#_FilterDatabase]\r\n[Scoring$]\r\n[Sheet1$]\r\nDrivers\r\nraces\r\nResults\r\n\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build a select query from comand line parameters \n", "Keep the results short for the notebook." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "sql -Table \"races\" -Select \"Venue\" -Distinct -where \"WinningDriver\" -eq \"Lewis Hamilton\" -OrderBy \"Venue\" | Select -first 5 | Out-String ; \"><snip><\"" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "29 row(s) returned\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\nVenue\r\n-----\r\nAlgave\r\nAustin\r\nBaku\r\nCatalunya (Barcelona)\r\nHockenheim\r\n\r\n\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "><snip><\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run more complicated queries by passing the SQL \n", "Most wins at the same track, and longest span from first to last win " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "sql \"SELECT WinningDriver, Venue, HowMany \n", " FROM (\n", " SELECT WinningDriver, Venue, Count(RaceDate) As Howmany \n", " FROM Races \n", " GROUP BY Venue, WinningDriver \n", " )\n", " WHERE HowMany >= 6\n", " ORDER BY Howmany DESC \" | Out-String" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "12 row(s) returned\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\nWinningDriver Venue HowMany\r\n------------- ----- -------\r\nMichael Schumacher Magny-Cours 8\r\nLewis Hamilton Hungaroring 8\r\nLewis Hamilton Silverstone 7\r\nMichael Schumacher Montréal 7\r\nLewis Hamilton Montréal 7\r\nMichael Schumacher Suzuka 6\r\nMichael Schumacher Spa-Francorchamps 6\r\nLewis Hamilton Shanghai 6\r\nMichael Schumacher Nürburgring 6\r\nAyrton Senna Monte-Carlo 6\r\nMichael Schumacher Imola 6\r\nMichael Schumacher Catalunya (Barcelona) 6\r\n\r\n\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "sql @\"\n", "SELECT DriverName, (oldest-youngest) AS Span, Oldest, Youngest, Wins \n", "FROM (\n", " SELECT DriverName, count(racedate) as Wins, \n", " min(Driverage) as Youngest, \n", " max(Driverage) as Oldest\n", " FROM Results \n", " WHERE RacePos = '1' \n", " GROUP BY Drivername \n", " )\n", "WHERE oldest > (youngest + 9)\n", "ORDER BY (oldest-youngest) Desc\n", "\"@ | Format-Table Drivername, @{f=\"0.000\";e=\"span\"} | Out-String\n", "# Can use the inner query for oldest winners and youngest winners. " ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "13 row(s) returned\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\nDriverName Span\r\n---------- ----\r\nKimi Räikkönen 15.581\r\nMichael Schumacher 14.086\r\nLewis Hamilton 13.435\r\nAlain Prost 12.055\r\nNiki Lauda 11.326\r\nNelson Piquet 11.173\r\nSebastian Vettel 11.020\r\nJack Brabham 10.825\r\nGerhard Berger 10.790\r\nRiccardo Patrese 10.426\r\nFernando Alonso 9.717\r\nRubens Barrichello 9.123\r\nNigel Mansell 9.103\r\n\r\n\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Close the Excel-over-ODBC and use a named session connected to an ODBC Data-Source-Name \n", "DSN is for SQlite" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "sql -Close\n", "sql -Session \"LR\" -Connection DSN=LR #Creates an alias using the session name " ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Data Source Database State Connection String\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "----------- -------- ----- -----------------\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "C:\\Users\\mcp\\Pictures\\Lightroom\\Catalog-2.lrcat Open DSN=LR\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "#use the session-name Alias.\n", "LR -Table AgInternedExifCameraModel -Select \"value\" -OrderBy \"value\" -where \"value\" -Like pentax* -Distinct | Out-String " ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "9 row(s) returned\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\nvalue\r\n-----\r\nPENTAX *ist D\r\nPENTAX K-1\r\nPENTAX K-30\r\nPENTAX K-5\r\nPENTAX K-5 II s\r\nPENTAX K-7\r\nPENTAX K10D\r\nPENTAX Optio430RS\r\nPENTAX ist D\r\n\r\n\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Close the ODBC session and start a new one with a SQlite native connection\n", "re-run the same query and close" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "lr -Close\n", "\n", "$lrpath = Join-Path ([environment]::GetFolderPath(\"MyPictures\")) \"Lightroom\\Catalog-2.lrcat\"\n", "\n", " sql -Session \"LR\" -Connection $lrpath -lite " ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Data Source Database State Connection String\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "----------- -------- ----- -----------------\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Catalog-2 main Open Data Source=C:\\Users\\mcp\\Pictures\\Lightroom\\Catalog-2.lrcat;\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "LR -Table AgInternedExifCameraModel -Select \"value\" -OrderBy \"value\" -where \"value\" -Like Pentax* -Distinct -Close | Out-String " ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "9 row(s) returned\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\nvalue\r\n-----\r\nPENTAX *ist D\r\nPENTAX K-1\r\nPENTAX K-30\r\nPENTAX K-5\r\nPENTAX K-5 II s\r\nPENTAX K-7\r\nPENTAX K10D\r\nPENTAX Optio430RS\r\nPENTAX ist D\r\n\r\n\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Connect to the collections SQlite database from Edge (Chromium-based version 80+)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "cd ~\n", "copy '.\\AppData\\Local\\Microsoft\\Edge Dev\\User Data\\Default\\Collections\\collectionsSQLite' $env:temp\n", "sql -lite -Connection \"$env:temp\\collectionsSQLite\" -ShowTables " ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "collections\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "collections_items_relationship\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "collections_sync\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "comments\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "favicons\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "items\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "items_sync\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "meta\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ " $d = Sql @'\n", " select\n", " collections_items_relationship.position,\n", " collections.title AS Collection,\n", " items.title,\n", " items.source,\n", " items.text_content\n", " from collections_items_relationship\n", " join items on items.id = collections_items_relationship.item_id\n", " Join collections on collections.id = collections_items_relationship.parent_id\n", " where collections.title like 'Azure'\n", " order by collections.position, collections_items_relationship.position\n", " limit 5\n", "'@ -lite\n", "\n", "sql -Close\n", "" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "5 row(s) returned\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "$d | ft -Property @{width=10; e='Collection'}, @{width=40;e='Title'}, \n", " @{n='LinkSource'; width=55; e={(convertfrom-json ([string]::new($_.source))).url} } -Wrap \n", "" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Collection title LinkSource\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "---------- ----- ----------\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Azure Passed AZ-400 Microsoft Certified Azure https://www.thomasmaurer.ch/2019/07/passed-az-4\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": " DevOps Engineer - Thomas Maurer 00-microsoft-certified-azure-devops-engineer/\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Azure Getting started with Azure DevOps job https://4bes.nl/2019/07/31/getting-started-with\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": " and step Templates - Part 1 - 4bes.nl -azure-devops-job-and-step-templates-part-1/\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Azure Core Cloud Services - Introduction to https://docs.microsoft.com/en-us/learn/modules/\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": " Azure - Learn welcome-to-azure/\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Azure Create an Azure Bastion host https://docs.microsoft.com/en-us/azure/bastion/\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": " bastion-create-host-portal\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "Azure Azure DevOps AZ-400 Exam – Study Notes https://gregorsuttie.com/2018/10/27/azure-devop\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": " – Azure Greg s-az-400-exam-study-notes/\r\n" }, "execution_count": 1, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": "\r\n" }, "execution_count": 1, "metadata": {} } ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "source": [ "del \"$env:temp\\collectionsSQLite\"\n", "#Sometimes it just doesn't !\n", "" ], "outputs": [] } ], "metadata": { "kernelspec": { "display_name": ".NET (PowerShell)", "language": "PowerShell", "name": ".net-powershell" }, "language_info": { "file_extension": ".ps1", "mimetype": "text/x-powershell", "name": "PowerShell", "pygments_lexer": "powerShell", "version": "7.0" } }, "nbformat": 4, "nbformat_minor": 4 }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment