原创 Python 列表,字典 常規操作

記錄下Python 中 「列表」,「字典」的常規操作,備忘 列表 # 1.定義列表,以中括號聲明即列表,無需聲明類似List之類的東西 var_name = [E1, E2, E3, E4] # 2.增 var_name.appe

原创 python 數據庫 % 衝突問題解決

在使用python後臺調用 MySQL數據庫的時候會有 「%」的關鍵字衝突問題,比如 用Python後端讀取 MySQL 中記錄的邏輯,在 impala端執行,其中涉及到模糊匹配的 「%」會報錯 解決:SQL邏輯中的單個「%」換爲「%

原创 lead窗口函數

lead函數在Impala中可以配合over使用,lead函數有三個參數 lead(property,num,default) 第一個參數「property」標識想查詢的列,「num」標識相對於當前行的第num行,第三個參數是默認值。

原创 計算連續登陸最大天數

背景:在網站平臺類業務需求中用戶的「最大登陸天數」,需求比較普遍。 原始數據: u0001 2019-10-10 u0001 2019-10-11 u0001 2019-10-12 u0001 2019-10-14 u0001 20

原创 Python郵件與CentOS郵件

背景:由於項目需要對每日數據進行比對監控,所以需要把比對結果發送給各負責人,本文記錄下Python發送郵件的幾個步驟。 需要模塊:smtplib pip install smtplib 閒言少敘上代碼 # -*- coding:

原创 Python調用MySQL存儲過程

使用Python處理MySQL邏輯時如果把SQL語句直接寫在字符串中調用多次運行需要多次編譯而且代碼維護難度增加,MySQL存儲過程將SQL邏輯封裝解決這個問題,下面記錄一下測試效果。 創建測試存儲過程 delimiter $$ D

原创 數據倉庫之拉鍊表

背景:在業務數據中存在會改變狀態的數據,需要做歷史分析,比如訂單狀態、登錄位置等。 問題:如何找到歷史某一天的所有主體的狀態。 針對上述問題有三種解決方案: 每天保存全量數據快照:每天都做數據全量備份,可直接查詢歷史某個節點的全量數據

原创 python 操作 hive

在使用Hadoop生態的時候需要使用腳本動態拼接hiveSQL來實現對數據的適應性操作。 在業務中使用了兩種方式,下面做下記錄: 1.使用hive -e 'sql ' 2.JDBC方式 -- 第一種方式 使用 hive -e 來執行

原创 hive幾種join方式

hive處理表關聯時由於數據量以及數據傾斜等問題會導致計算性能差甚至任務失敗,下面記錄一下hive的幾種關聯方式。 1.common join 普通連接,在SQL中不特殊指定連接方式使用的都是這種普通連接。 缺點:性能較差 優點:操作

原创 hive 提交任務時Job init failed

背景:oozie+hive+python. 執行操作:在oozie中配置python腳本動態拼接SQL使用hive執行 關鍵操作:hiveSQL中有動態分區 報錯信息: 2019-03-26 13:53:51,437 WARN [

原创 Hive order by ,sort by ,distribute by, cluster by

Hive中對於排序給出了通用的「order by」與 非全局排序「sort by」至於其他兩個函數是配合使用的。 order by與sort by的區別: order by的使用與標準SQL相同,實現全局排序,但是缺點是由於要進行全局

原创 Windows 可以使用 gitbash 但是cmd不能識別git命令

Windows下安裝了git 鼠標右鍵可以看到 gitbash和GitUI 但是cmd命令行不能執行git命令 原因:沒有配置git.exe的路徑到PATH環境變量中 解決:在gitbash命令行中執行  where git 找到g

原创 pycharm urls 文件沒有高亮顯示

使用 pycharm 開發 django 項目發現配置urls文件時沒有高亮語法顯示,看起來相當難受,做下記錄 原因:pycharm將urls文件當做普通的文本文件處理了,效果如下   解決:File--->settings----

原创 Python學習日誌--面向對象

面向對象的思想是高級語言中最好的特性,使程序的開發更加優美,維護起來更加簡潔。 Python中面向對象與Java中的面向對象在特性和功能方面幾乎沒有區別。 面向對象的特徵: 封裝性:可以將多個屬性和方法(功能)封裝,有利於統一維護 繼

原创 Python學習日誌--文件讀寫

在編程過程中經常需要文件讀寫,Python的文件讀寫要比Java簡單的多。 打開文件的集中方式: # 1.只讀 open("path/filename","r") # 2.只寫 open("path/filename","w")