Logica实战与剖析(1)
Logica是Datalog家族的一種語言,可以編譯成標(biāo)準(zhǔn)sql。Logica的大部分語法都遵循Yedalog,這是Google早期開發(fā)的一種語言。Logica的創(chuàng)建是為了同時享受簡潔清晰的邏輯編程和基于SQL的系統(tǒng)(如BigQuery)的全部功能。
Logica在語義上等同于StandardSQL。它很容易編寫,最重要的是讀取用Logica編寫的中型和大型查詢。這些查詢可以編譯成StandardSQL并在BigQuery上運(yùn)行。
Logica是為工程師、數(shù)據(jù)科學(xué)家和其他希望在編寫查詢和在BigQuery上運(yùn)行的管道時使用邏輯編程語法的專家設(shè)計(jì)的。
Logica編譯為SQL,并通過邏輯編程語法方便地訪問GoogleBigQuery引擎的強(qiáng)大功能。這很有用,因?yàn)锽igQuery比最先進(jìn)的本地邏輯編程引擎強(qiáng)大得多。
我們鼓勵您嘗試Logica,尤其是在
您已經(jīng)在使用邏輯編程,并且需要更多的計(jì)算能力,或者
您使用SQL,但對其可讀性感到不滿意,或者
你想學(xué)習(xí)邏輯編程并將其應(yīng)用于大數(shù)據(jù)處理。
在未來,我們計(jì)劃支持更多的SQL方言和引擎。
在C、Python、C++、java等程序中,一個基本的程序塊是函數(shù)。
在SQL中,查詢中構(gòu)造一個公共塊。
在邏輯學(xué)中,基本的構(gòu)造塊是謂詞predicate。
謂詞是包含變量的語句。
謂詞是一個非常普遍的概念。函數(shù)和查詢(以及表)可以看作是特殊類型的謂詞。
安裝
# Install. python3 -m pip install logica # Run: # To see usage message. python3 -m logica # To print SQL for HelloWorld program. python3 -m logica - print Greet <<<'Greet(greeting: "Hello world!")'也可如下方法
git clone https://github.com/evgskv/logica cd logica ./logica - print Greet <<<'Greet(greeting: "Hello world!")'要在BigQuery上運(yùn)行Logica程序,您需要一個Google云項(xiàng)目。一旦您有了一個項(xiàng)目,您就可以在CoLab中運(yùn)行Logica程序,提供您的項(xiàng)目id。
要在本地運(yùn)行Logica,需要Python3。
要從命令行啟動Logica謂詞執(zhí)行,您需要bq,BigQuery命令行工具。為此,您需要安裝googlecloudsdk。
Cloud SDK 要求安裝 Python;支持的版本是 Python 3(首選,3.5 到 3.8)和 Python 2(2.7.9 或更高版本)。
python --version
如需詳細(xì)了解如何選擇和配置 Python 解釋器,請參閱 gcloud topic startup。
下載以下軟件包之一:
注意:如需確定您的操作系統(tǒng)版本,請通過命令行運(yùn)行 getconf LONG_BIT。
平臺 軟件包 大小 SHA256 校驗(yàn)和
Linux 64 位
(x86_64)
google-cloud-sdk-334.0.0-linux-x86_64.tar.gz 84.4 MB 8ba026255d73e8b11b8a9b6a4e7f72cbe8b08952df2739d78d6d003666a39d3d
Linux 32 位
(x86)
google-cloud-sdk-334.0.0-linux-x86.tar.gz 81.7 MB bbf1f8b36f2606b3c45d105fe7078810a09e24a1171418530e337226d9547fdd
或者,如需通過命令行下載 Linux 64 位歸檔文件,請運(yùn)行以下命令:
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-334.0.0-linux-x86_64.tar.gz
對于 32 位歸檔文件,請運(yùn)行以下命令:
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-334.0.0-linux-x86.tar.gz
將文件內(nèi)容提取到文件系統(tǒng)上的任意位置(最好是主目錄)。如果您想替換現(xiàn)有安裝,請移除現(xiàn)有的 google-cloud-sdk 目錄并將歸檔解壓縮到同一位置。
可選。使用安裝腳本將 Cloud SDK 工具添加至您的 PATH。您還可以選擇為您的 shell 啟用命令補(bǔ)全功能以及選擇開啟使用情況統(tǒng)計(jì)信息收集功能。
使用以下命令運(yùn)行腳本(從您在上一步中提取的文件夾的根目錄運(yùn)行):
./google-cloud-sdk/install.sh
也可以通過提供偏好設(shè)置作為標(biāo)志來以非交互方式(例如,使用腳本)完成此操作。相關(guān)說明,請參閱:
./google-cloud-sdk/install.sh --help
打開新終端,以使更改生效。
運(yùn)行 gcloud init 來初始化 SDK:
./google-cloud-sdk/bin/gcloud init
可選。使用組件管理器安裝其他組件。
邏輯編程是一種聲明式編程范式,其中程序被編寫為一組邏輯語句。
邏輯編程是60年代后期在學(xué)術(shù)界發(fā)展起來的,Prolog和Datalog是邏輯編程語言中最突出的例子。Logica是Datalog家族的一種語言。
數(shù)據(jù)日志和關(guān)系數(shù)據(jù)庫的出發(fā)點(diǎn)是相同的:將數(shù)據(jù)視為關(guān)系,將數(shù)據(jù)操作視為對這些關(guān)系的一系列操作。但是Datalog和SQL在描述這些操作的方式上有所不同。Datalog受一階命題邏輯的數(shù)學(xué)語法啟發(fā),SQL遵循自然語言的語法。
SQL以自然語言為基礎(chǔ),使人們能夠訪問數(shù)據(jù)庫,而無需接受計(jì)算機(jī)編程或數(shù)學(xué)方面的正式培訓(xùn)。當(dāng)您想要表達(dá)的邏輯非常重要時,這種便利性可能會變得非常昂貴。有許多與簡單邏輯程序相對應(yīng)的難讀SQL查詢示例。
Logica將邏輯程序編譯成SQL表達(dá)式,因此可以在最先進(jìn)的SQL引擎BigQuery上執(zhí)行。
在數(shù)據(jù)庫理論家中,Datalog和SQL是等價(jià)的。事實(shí)上,從數(shù)據(jù)日志到SQL再到SQL的轉(zhuǎn)換通常很簡單。但也有一些細(xì)微的差別,例如如何處理析取和否定。在Logica中,我們試圖做出一些選擇,盡可能容易地理解最終的SQL結(jié)構(gòu),從而使用戶能夠編寫高效執(zhí)行的程序。
logica learn1.l run Prime
總結(jié)
以上是生活随笔為你收集整理的Logica实战与剖析(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python精要(80)-wxpytho
- 下一篇: Java中replace、replace