Created
November 20, 2020 18:20
-
-
Save jhoneill/7f27ff9a7f00945fea900d9a656613de to your computer and use it in GitHub Desktop.
Accessing data with the GetSQL module
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ "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>© 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