精华内容
下载资源
问答
  • MySQL ADD COLUMN

    千次阅读 2021-01-18 22:16:44
    MySQL ADD COLUMN简介:在本教程中,...MySQL ADD COLUMN语句简介要向现有表添加新列,请使用ALTER TABLEADD COLUMN语句,如下所示:ALTER TABLE tableADD [COLUMN] column_name column_definition [FIRST|AFTER exi...

    MySQL ADD COLUMN

    简介:在本教程中,我们将向您展示如何使用MySQL ADD COLUMN语句向表中添加列。

    MySQL ADD COLUMN语句简介

    要向现有表添加新列,请使用ALTER TABLE ADD COLUMN语句,如下所示:

    ALTER TABLE table

    ADD [COLUMN] column_name column_definition [FIRST|AFTER existing_column];

    让我们更详细地研究一下这个陈述。

    首先,在ALTER TABLE子句后指定表名。

    其次,将新列及其定义放在ADD COLUMN子句之后。请注意,COLUMN关键字是可选的,因此您可以省略它。

    第三,MySQL允许您通过指定FIRST关键字将新列添加为表的第一列。它还允许您使用AFTER existing_column子句在现有列之后添加新列。如果您没有明确指定新列的位置,MySQL会将其添加为最后一列。

    若要同时向表中添加两个或更多列,请使用以下语法:

    ALTER TABLE table

    ADD [COLUMN] column_name_1 column_1_definition [FIRST|AFTER existing_column],

    ADD [COLUMN] column_name_2 column_2_definition [FIRST|AFTER existing_column],

    ...;

    我们来看一些向现有表添加新列的示例。

    MySQL ADD COLUMN示例

    首先,我们使用以下语句创建一个表 命名vendors用以演示:

    CREATE TABLE IF NOT EXISTS vendors (

    id INT AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(255)

    );

    其次,我们为vendors表添加一个名为phone新列。因为我们在name列之后明确指定phone列的位置,所以MySQL将遵守这一点。

    ALTER TABLE vendors

    ADD COLUMN phone VARCHAR(15) AFTER name;

    第三,我们再为vendors表添加一个名为vendor_group新列。此时,我们不指定新列vendor_group的位置,因此MySQL将列添加到 vendors表的最后一列。

    ALTER TABLE vendors

    ADD COLUMN vendor_group INT NOT NULL;

    让我们在vendors表中插入一些记录。

    INSERT INTO vendors(name,phone,vendor_group)

    VALUES('IBM','(408)-298-2987',1);

    INSERT INTO vendors(name,phone,vendor_group)

    VALUES('Microsoft','(408)-298-2988',1);

    我们可以查看vendors表的变化。

    SELECT

    id, name, phone,vendor_group

    FROM

    vendors;

    +----+-----------+----------------+--------------+

    | id | name | phone | vendor_group |

    +----+-----------+----------------+--------------+

    | 1 | IBM | (408)-298-2987 | 1 |

    | 2 | Microsoft | (408)-298-2988 | 1 |

    +----+-----------+----------------+--------------+

    2 rows in set (0.00 sec)

    第四,再添加两列email并hourly_rate同时添加到vendors表中。

    ALTER TABLE vendors

    ADD COLUMN email VARCHAR(100) NOT NULL,

    ADD COLUMN hourly_rate decimal(10,2) NOT NULL;

    注意:email和hourly_rate两个列都分配了  NOT NULL values但是,vendors表已经有数据。在这种情况下,MySQL将使用这些新列的默认值。

    我们来检查vendors表格中的数据。

    SELECT

    id, name, phone, vendor_group, email, hourly_rate

    FROM

    vendors;

    +----+-----------+----------------+--------------+-------+-------------+

    | id | name | phone | vendor_group | email | hourly_rate |

    +----+-----------+----------------+--------------+-------+-------------+

    | 1 | IBM | (408)-298-2987 | 1 | | 0.00 |

    | 2 | Microsoft | (408)-298-2988 | 1 | | 0.00 |

    +----+-----------+----------------+--------------+-------+-------------+

    2 rows in set (0.00 sec)

    email列中填充了空值,而不是NULL值。并且hourly_rate列填充了0.00值。

    如果您不小心添加了表中已存在的列,MySQL将发出错误。例如,如果执行以下语句:

    ALTER TABLE vendors

    ADD COLUMN vendor_group INT NOT NULL;

    MySQL发出错误消息:

    ERROR 1060 (42S21): Duplicate column name 'vendor_group'

    对于包含几列的表,可以很容易地看到哪些列已经存在。但是,如果有一个包含数百列的大表,那就更难了。

    在某些情况下,您希望在添加列之前检查表中是否已存在列。但是,没有ADD COLUMN IF NOT EXISTS可用的声明。幸运的是,您可以从information_schema数据库的columns表中获取此信息,如下所示:

    SELECT

    IF(count(*) = 1, 'Exist','Not Exist') AS result

    FROM

    information_schema.columns

    WHERE

    table_schema = 'classicmodels'

    AND table_name = 'vendors'

    AND column_name = 'phone';

    +-----------+

    | result |

    +-----------+

    | Not Exist |

    +-----------+

    1 row in set (0.01 sec)

    在WHERE子句中,我们传递了三个参数:表模式或数据库,表名和列名。我们使用IF函数来返回列是否存在。

    在本教程中,您学习了如何使用MySQL ADD COLUMN语句将一个或多个列添加到表中。

    展开全文
  • 所谓布局,比如早期的4大布局:块布局、行内布局、表格布局、定位布局,多半解决的是块级元素行内显示问题,从早期的...本文详细讲解了table-cell的使用,及多列布局columns、column-count和flex布局的详细使用说明。

      简单来说Html Dom元素就2类:行内元素和块级元素,前者在行内显示(span等),后者换行显示(div等)。所谓布局,比如早期的4大布局:块布局、行内布局、表格布局、定位布局,多半解决的是块级元素行内显示问题。我们可以看下块级元素行内显示的常见方式:

    • float,浮动显示,float-left或float-right;
    • display: inline-block,块级元素转为行内块显示,大名鼎鼎的前端框架bootstrap深谙此道,btn-group|form-group|input-group等都是基于此实现;
    • 表格布局:将块元素放到td里,“任凭你块元素多?,也只能在我的td里猫着”;
    • position:流氓布局,可以想哪显示就哪显示,设z-index:9999基本上就可以遮挡所有元素在最前显示啦

    基于此,基本上早期的页面都是表格布局,后来逐渐被div+css替代,现在呢?

    • 以bootstrap为例,依然还是float布局,经典的col-*栅格系统就是基于此实现;
    • 以微信小程序为例,则是flex布局;

      除此之外,display:table-cell也有很多粉丝,其表现基本上同td,俗称不是表格的表格。早期块级元素行内显示有2个难点:

    • 垂直居中显示问题;
    • 剩余宽度(高度)100%填充问题;

      随着CSS3引入多列column-count和flex布局,块级元素行内显示问题,我们有了更多地选择,同时也可以比较优雅地解决垂直居中和宽度、高度自适应问题。接下来,本文将先简单介绍下display:table-cell的使用,然后重点讲解多列column-count和flex布局。

    一、display: table-cell

    CSS display属性与表格相关的值有下述几种:

    描述
    table此元素会作为块级表格来显示(类似 < table >),表格前后带有换行符。
    inline-table此元素会作为内联表格来显示(类似 < table>),表格前后没有换行符。
    table-row-group此元素会作为一个或多个行的分组来显示(类似 < tbody>)。
    table-header-group此元素会作为一个或多个行的分组来显示(类似 < thead>)。
    table-footer-group此元素会作为一个或多个行的分组来显示(类似 < tfoot>)。
    table-row此元素会作为一个表格行显示(类似 < tr>)。
    table-column-group此元素会作为一个或多个列的分组来显示(类似 < colgroup>)。
    table-column此元素会作为一个单元格列显示(类似 < col>)
    table-cell此元素会作为一个表格单元格显示(类似 < td> 和 < th>)
    table-caption此元素会作为一个表格标题显示(类似 < caption>)

    比较常用的有:display: table; display: table-row; display: table-cell; 一个经典的table-cell布局为:table -> table-row -> table-cell,对应表格的table->tr->td,看个案例:

    .table {display: table; border-collapse: collapse;}
    .table-cell{display: table-cell; border: 1px solid #e2e2e2; height: 60px; vertical-align: middle; min-width: 200px; padding: 8px}
    
    <div class="table">
    	<div class="table-row">
    		<div class="table-cell cell1" style="width: 200px;">table-cell: cell1</div>
    		<div class="table-cell cell2" style="width: 100%;">table-cell: cell2</div>
    		<div class="table-cell cell3" style="width: 200px;">table-cell: cell3</div>
    	</div>
    </div>
    <div class="table">
    	<div class="table-cell cell1" style="width: 200px;">table-cell: cell1</div>
    	<div class="table-cell cell2" style="width: 100%;">table-cell: cell2, 没有table-row元素</div>
    	<div class="table-cell cell3" style="width: 200px;">table-cell: cell3</div>
    </div>
    

    在这里插入图片描述
    从上述案例可以看出,有无< div class=“table-row”>元素,效果一样,原因是:浏览器会自动创建一个表格匿名行,另外:

    • 轻松实现文字(换成图片也一样,某宝很多店铺的宝贝图片就是采用此法实现图片垂直居中显示)垂直居中;
    • 轻松实现剩余宽度100%填充,这里有个技巧:cell1,cell3需要设置width、min-width,cell2的width: 100%才有意义;
    • 将cell2变成一个只是占宽度,没有意义的空div,则可实现cell1,cell3两端对齐。

    除此之外,display: table-cell还有一个妙用:元素等高对齐或者说高度跟随
    在这里插入图片描述

    .table {display: table; border-collapse: collapse;}
    .table-cell{display: table-cell; border: 1px solid #e2e2e2; height: 60px; vertical-align: middle; min-width: 200px; padding: 8px}
    .table-height .cell1{background: rgba(255,0,0,0.6);}
    .table-height .cell3{background: rgba(0,0,255,0.6); height: 80px;}
    <div class="table table-height">
    	<div class="table-cell cell1" style="width: 200px;">table-cell: cell1</div>
    	<div class="table-cell cell2" style="width: 100%;">table-cell: cell2, 把cell3的高度设置成80px,cell1和cell2的高度也变成了80px</div>
    	<div class="table-cell cell3" style="width: 200px;">table-cell: cell3</div>
    </div>
    

    说明: cell3设置了高度80px,cell1和cell2高度跟随cell3变成了80px

    二、多列columns、column-count

      css3引入了多列文本布局:columns, column-count, column-gap等相关属性设置,其本意是实现如报纸一样的多栏显示,因此我们看到很多案例的class都命名为报纸(newspaper)。多列本质是将容器内的文本元素或div等块级元素按column-count或column-width进行等分,因此多列布局也可用于块级元素行内显示,很多瀑布流就是基于多列布局来实现的。下面我们先看下与多列布局有关的几个关键属性:

    • column-count: number|auto,默认值auto,列数设置;
      如设置了column-width则可以不设置column-count,浏览器会按容器宽度、column-width、column-gap计算列数;
    • column-gap: length|normal,默认值normal(通常是1em,如果没有设置font-size,则常见浏览器1em = 16px),列间隙设置;
    • column-rule: column-rule-width column-rule-style column-rule-color;
      设置列之间分割线的宽度、样式、颜色,column-rule:3px outset #ff00ff,类似border:1px solid #ff00ff,也可宽度、样式和颜色单独设置:
    • column-rule-width: thin|medium|thick|length;
      设置分割线宽度,其值有:纤细|中等|宽厚|指定宽度,默认值为medium
    • column-rule-style: none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset;
      设置分割线样式,默认值为none;groove,ridge,inset和outset效果取决于宽度和颜色;
    • column-rule-color: color; 设置分割线颜色,默认为black

    看个案例:

    .columns {column-count: 3; column-gap: 20px; column-rule:2px outset #ff00ff;  column-width: 100px; margin-bottom: 20px}
    .columns-width {column-count: auto; column-width: 100px;}
    .columns .col {border: 1px solid #e2e2e2; padding: 10px; height: 100px;}
    .columns-width .col{height: 50px}
    <div class="columns">
    	<div class="col col1">col1</div>
    	<div class="col col2">column-count: 3;<br>column-gap: 20px;<br>column-rule: 2px outset #ff00ff;</div>
    	<div class="col col3">col3<br>column-width=(1140 - 20 *2)/3</div>
    </div>
    <div class="columns columns-width" style="column-width:200px;">
    	<div class="col col1">col1</div>
    	<div class="col col2">column-width:200px</div>
    	<div class="col col3">col3</div>
    </div>
    <div class="columns columns-width" style="column-width:300px;">
    	<div class="col col1">col1</div>
    	<div class="col col2">column-width:300px</div>
    	<div class="col col3">col3</div>
    </div>
    

    在这里插入图片描述
    说明:

    • 同时设置了column-count、column-width,则column-width无效;
    • 设置column-width需谨慎,根据column-width计算列数不太好计算,假设column-width: 200px,容器宽度1140px,则具体步骤如下:
      1)先确定列数n,200*n + (n-1)*20<=1140,求得n最大值 = 5;
      2)根据列数,重新计算列宽 = (1140 - (5 -1)*20)/5 = 212;

    三、flex布局

      CSS3 弹性盒子( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式,并且x轴和y轴(或flex主轴、辅轴)都适用,flex布局是微信小程序页面布局首选。flex布局规范、语法说明,大家参考下述2篇,讲解的比较透彻、形象。

    本文以flex实际案例为主,于案例间讲解flex相关属性使用说明及注意事项。

    1、justify-content和align-items

    .table .box {
    	width: 92px; height: 92px; border: 1px solid #e2e2e2; border-radius: 5px; 
    	box-shadow: 0px 0px 10px rgba(0,0,0,0.8);
    	display: flex;
    }
    .table .point {
    	width: 20px; height: 20px; margin: 5px; border-radius: 50%; background: #000; 
    	display:block; color:#fff; font-size:12px; text-align:center; line-height: 20px;
    }
    <table class='table table-bordered'>
    	<tr>
    		<td><div class='box'><span class='point'>1</span></div></td>
    		<td><div class='box' style="justify-content:center"><span class='point'>2</span></div></td>
    		<td><div class='box' style="justify-content:flex-end"><span class='point'>3</span></div></td>
    		<td><div class='box' style="align-items:center"><span class='point'>4</span></div></td>
    		<td><div class='box' style="justify-content:center;align-items:center"><span class='point'>5</span></div></td>
    		<td><div class='box' style="justify-content:center;align-items:flex-end"><span class='point'>8</span></div></td>
    		<td><div class='box' style="justify-content:flex-end;align-items:flex-end"><span class='point'>9</span></div></td>
    	</tr>
    	<tr>
    		<td></td>
    		<td>justify-content:center</td>
    		<td>justify-content:flex-end</td>
    		<td>align-items:center</td>
    		<td>justify-content:center;<br>align-items:center</td>
    		<td>justify-content:center;<br>align-items:flex-end</td>
    		<td>justify-content:flex-end;<br>align-items:flex-end</td>
    	</tr>
    </table>
    

    在这里插入图片描述

    1)justify-content,元素在主轴上的对齐方式

    语法: -content: flex-start | flex-end | center | space-between | space-around

    说明: flex-direction = row|row-reverse的话,主轴为x轴,默认值flex-start,各个值说明如下:

    • flex-start:元素从行开始处开始摆放;
    • flex-end:元素靠着行结尾摆放;
    • center:元素居中摆放;
    • space-between:元素均匀分布在该行上,元素之间间隙一致;
    • space-around:元素均匀分布在该行上,元素之间间隙一致,首尾元素距离行首、行尾为元素间隙一半;
    2)align-items,元素在辅轴上的对齐方式

    语法: align-items: flex-start | flex-end | center | baseline | stretch
    说明: flex-direction = row|row-reverse的话,辅轴为y轴,默认值stretch;以y轴为辅轴为例,各个值说明如下:

    • flex-start:元素顶部对齐
    • flex-end:元素底部对齐
    • center:元素垂直居中;
    • baseline:与基线对齐,基本上同flex-start,受元素line-height影响;
    • stretch:默认值,如果元素高度没设置或auto,则高度拉伸为容器的高度,但同时会遵照’min/max-width/height’属性的限制;
      在这里插入图片描述
    3)案例说明
    • 元素设置了display: flex, 启用flex布局
    • 没有设置flex-direction,默认值为row,主轴为x轴,辅轴为y轴;

    2、一个完整的骰子?案例

    上个案例主要说明在flex-direction:row的情况下,align-items和justify-content属性的运用,本案例将绘制骰子的6个面,涉及align-self、flex布局嵌套等更多flex布局应用。

    .flex-row {display: flex; flex-direction: row;}
    .flex-col {display: flex; flex-direction: column;}
    .flex-dice .box {
    	width: 92px; height: 92px; border: 1px solid #e2e2e2; border-radius: 8px; 
    	box-shadow: 0px 0px 8px rgba(0,0,0,0.8);
    }
    .flex-dice .point {
    	width: 20px; height: 20px; margin: 5px; border-radius: 50%; background: blue; 
    	display:block; color:#fff; font-size:12px; text-align:center; line-height: 20px;
    }
    .box-dice4 .point {background: red}
    <table class='table table-bordered flex-dice'>
    	<tr>
    		<td><div class='box flex-row' style="justify-content:center;align-items:center"><span class='point point1' style="background:red;"></span></div></td>
    		<td><div class='box flex-col' style="justify-content:space-between; align-items:center">
    			<span class='point'></span><span class='point'></span>
    		</div></td>
    		<td><div class='box flex-row'>
    			<span class='point'></span>
    			<span class='point' style="align-self:center"></span>
    			<span class='point' style="align-self:flex-end"></span>
    		</div></td>
    		<td><div class='box flex-col box-dice4' style="justify-content: space-between;">
    				<div class='flex-row' style="justify-content: space-between;">
    					<span class='point'></span><span class='point'></span>
    				</div>
    				<div class='flex-row' style="justify-content: space-between;">
    					<span class='point'></span><span class='point'></span>
    				</div>
    		</div></td>
    		<td><div class='box flex-col'>
    				<div class='flex-row' style="justify-content: space-between;">
    					<span class='point'></span><span class='point'></span>
    				</div>
    				<div class='flex-row' style="justify-content: center;">
    					<span class='point'></span>
    				</div>					
    				<div class='flex-row' style="justify-content: space-between;">
    					<span class='point'></span><span class='point'></span>
    				</div>
    		</div></td>			
    		<td><div class='box flex-col'>
    				<div class='flex-row' style="justify-content: center;">
    					<span class='point'></span><span class='point'></span>
    				</div>
    				<div class='flex-row' style="justify-content: center;">
    					<span class='point'></span><span class='point'></span>
    				</div>					
    				<div class='flex-row' style="justify-content: center;">
    					<span class='point'></span><span class='point'></span>
    				</div>
    		</div></td>
    	</tr>
    	<tr>
    		<td>flex-row<br>justify-content:center<br>align-items:center</td>
    		<td>flex-col<br>justify-content:space-between;<br>align-items:center</td>
    		<td>flex-row<br>p2 align-self:center<br>p3 align-self:flex-end</td>
    		<td>flex-col<br>justify-content:space-between;<br>flex-col<br>justify-content:space-between;</td>
    		<td>flex-col<br>flex-row<br>justify-content:space-between;<br>justify-content:center;<br>justify-content:space-between;</td>
    		<td>flex-col<br>flex-row<br>justify-content:center</td>
    	</tr>
    </table>
    

    在这里插入图片描述
    案例说明:

    1)align-self 属性解析

    align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
    语法: align-self: auto | flex-start | flex-end | center | baseline | stretch
    说明: 除auto值外,其它值同align-items参数值。

    2)flex布局嵌套

    案例中,骰子4点,5点,6点使用了flex嵌套,先是flex-direction: column布局,然后每行又是flex-direction: row布局;

    3)代码结构

    通过class统一设置flex布局,flex-col class,flex布局,主轴为y轴;flex-row class,flex布局,主轴为x轴。flex布局里的item元素,用内敛style具体实现。

    3、剩余高度、宽度填充

    剩余高度、宽度填充需要使用到flex布局的另外3个关键属性:flex-grow、flex-shrink、flex-basis和flex(前三者的简写),具体说明如下:

    • flex-grow 属性用于设置或检索弹性盒子的扩展比率,默认 0
      语法: flex-grow: number|initial|inherit;
    • flex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值,默认值为1,即同比例收缩。
      语法: flex-shrink: number|initial|inherit;
    • flex-basis 属性用于设置或检索弹性盒伸缩基准值,默认值auto
      语法: flex-basis: number|auto|initial|inherit;
    • flex 属性用于设置或检索弹性盒模型对象的子元素如何分配空间,是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。
      语法: flex: flex-grow flex-shrink flex-basis|auto|initial|inherit; 默认值flex: 0 1 auto,flex:auto = flex: 1 1 auto,flex:1 = flex:1 1 auto;
    1)剩余高度填充

    在这里插入图片描述
    剩余高度填充常见处理方式:

    • 固定元素:定义其高度,或设置flex-basis属性,如hd-4
    • 填充元素:设置flex:1
    • 需要解决内容溢出问题,如hd-4,bd-5,需要overflow:hidden;
    2)剩余宽度填充

    最常见恐怕莫过是form表单里的label+input框啦,前者固定宽度,后者填充剩余宽度,看个案例:
    在这里插入图片描述剩余宽度填充常见处理方式:

    • 固定元素:定义其宽度,或设置flex-basis属性,如label width统一设置为60px
    • 填充元素:设置flex:1,若flex:1的显示结果不是期望值,请在flex:1元素上添加overflow:hidden试试。
    • 可以铜鼓align-items,设置label垂直方向对齐方式,如“意见”垂直居中显示。
    展开全文
  • tf.feature_column详解及避坑攻略

    千次阅读 2021-01-06 19:22:31
    在使用tensorflow搭建模型时会有特征工程的工作,今天介绍一下tensorflow做特征工程的api:tf.feature_column。 feature_column 输入输出类型 1.深度模型的输入必须是Dense类型,所有输出是categorical类型需要经过...

    在使用tensorflow搭建模型时会有特征工程的工作,今天介绍一下tensorflow做特征工程的api:tf.feature_column。

    feature_column 输入输出类型
    1.深度模型的输入必须是Dense类型,所有输出是categorical类型需要经过indicator或者embedding的转换才可以
    2.indicator, embedding, bucketized的输入不能是原始特征,前两者只能是categorical类型的feature_column, 后者只能是numeric_column

    feature_column

    输入

    输出

    输出是否为dense

    categorical_column_with_identity

    数值型离散

    categorical

    N

    categorical_column_with_vocabulary_list

    字符型/数值型离散

    categorical

    N

    categorical_column_with_hash_bucket

    类别太多的离散值

    categorical

    N

    crossed_column

    categorical/离散值

    categorical

    N

    indicator_column

    categorical

    one/multi-hot

    Y

    embedding_column

    categorical

    dense vector

    Y

    numeric_column

    数值型连续值

    numeric

    Y

    bucketzied_column

    numeric_column

    one-hot

    Y

    首先介绍一下tf.feature_column.input_layer,使用 input_layer 作为model的一个输入。

    tf.feature_column.input_layer(
    features,
    feature_columns,
    weight_collections=None,
    trainable=True,
    cols_to_vars=None,
    cols_to_output_tensors=None
    )

    参数:
    features:字典,最主要的是dict的key一定要与 feature_columns的key一致,后续才能 才能根据key进行匹配。
    feature_columns:该参数必须是继承于DenseColumn的numeric_column, embedding_column, bucketized_column, indicator_column,
    如果feature是类别的,那么必须先 用embedding_column or indicator_column封装一下使用。

    输入连续值

    1、tf.feature_column.numeric_column

    numeric_column(
        key,
        shape=(1,),
        default_value=None,
        dtype=tf.float32,
        normalizer_fn=None
    )

    参数:
    key: 特征的名字。也就是对应的列名称。
    shape: 该key所对应的特征的shape. 默认是1,但是比如one-hot类型的,shape就不是1,而是实际的维度。总之,这里是key所对应的维度,不一定是1.
    default_value: 如果不存在使用的默认值
    normalizer_fn: 对该特征下的所有数据进行转换。如果需要进行normalize,那么就是使用normalize的函数.这里不仅仅局限于normalize,也可以是任何的转换方法,比如取对数,取指数,这仅仅是一种变换方法.

    def norm(x):
        return x**2
    features = {'age': [[50], [18], [13],[29],[43]]}
    age = tf.feature_column.numeric_column('age',normalizer_fn= norm)
    sess.run(tf.feature_column.input_layer(features,[age]))
    array([[2500.],
           [ 324.],
           [ 169.],
           [ 841.],
           [1849.]], dtype=float32)

    不适用转换函数时:

    age = tf.feature_column.numeric_column('age')
    sess.run(tf.feature_column.input_layer(features,[age]))
    array([[50.],
           [18.],
           [13.],
           [29.],
           [43.]], dtype=float32)

    2、tf.feature_column.bucketized_column

    bucketized_column(
        source_column,
        boundaries
    )
    

    参数:
    source_column: 必须是numeric_column
    boundaries: 不同的桶。boundaries=[0., 1., 2.],产生的bucket就是, (-inf, 0.), [0., 1.), [1., 2.), and [2., +inf), 每一个区间分别表示0, 1, 2, 3,所以相当于分桶分了4个.

    features = {'age': [[50], [18], [13],[29],[43]]}
    age_bin = tf.feature_column.bucketized_column(age,boundaries = [10.,15.,25.,35.,45.,55.])
    sess.run(tf.feature_column.input_layer(features,[age_bin]))
    array([[0., 0., 0., 0., 0., 1., 0.],
           [0., 0., 1., 0., 0., 0., 0.],
           [0., 1., 0., 0., 0., 0., 0.],
           [0., 0., 0., 1., 0., 0., 0.],
           [0., 0., 0., 0., 1., 0., 0.]], dtype=float32)

    输入离散值

    3、tf.feature_column.categorical_column_with_vocabulary_list

    categorical_column_with_vocabulary_list(
        key,
        vocabulary_list,
        dtype=None,
        default_value=-1,
        num_oov_buckets=0
    )

    作用:将类别特征进行hash映射。根据单词的序列顺序,把单词根据index转换成one hot encoding。
    参数:
    key: feature名字
    vocabulary_list: 对于category来说,进行转换的list.也就是category列表.
    dtype: 仅仅string和int被支持,其他的类型是无法进行这个操作的.
    default_value: 当不在vocabulary_list中的默认值,这时候num_oov_buckets必须是0.
    num_oov_buckets: 用来处理那些不在vocabulary_list中的值,如果是0,那么使用default_value进行填充;如果大于0,则会在[len(vocabulary_list), len(vocabulary_list)+num_oov_buckets]这个区间上重新计算当前特征的值.与前面numeric 不同的是,这里返回的是稀疏tensor.

    cat_job = tf.feature_column.categorical_column_with_vocabulary_list('gender',['male','female'])
    cat_job
    _VocabularyListCategoricalColumn(key='gender', vocabulary_list=('male', 'female'), dtype=tf.string, default_value=-1, num_oov_buckets=0)

    类别较多是使用tf.feature_column.categorical_column_with_hash_bucket

    4、tf.feature_column.categorical_column_with_identity

    作用:把numerical data转成one hot encoding,只适用于值为整数的类别型变量
    参数:
    key:features是一个字典,key是特征名字,value是特征值。features[key]或者是Tensor或SparseTensor 。如果Tensor ,
    缺失值,可以表示为-1为int和''字符串,这将通过此功能列被删除。dict的key一定要与 feature_columns的key一致,后续才能根据key进行匹配。
    num_buckets: 分桶的个数。
    default_value:当你输入的范围内的整数使用此[0, num_buckets)并且要使用的输入值本身作为分类ID。
    超出此范围的值将导致default_value如果指定,否则就会失败。下面的例子中,在输入的文字0将导致相同的默认ID。
    feature_columns:必须是继承于DenseColumn的numeric_column, embedding_column, bucketized_column, indicator_column。如果feature是类别的,那么必须先用embedding_column或者indicator_column封装一下使用。

    features = {'birthplace': [[1],[1],[3],[4]]}
    #特征列
    birthplace = tf.feature_column.categorical_column_with_identity("birthplace", num_buckets=5, default_value=0)
    birthplace = tf.feature_column.indicator_column(birthplace)
    #组合特征列
    columns = [birthplace]
    #输入层(数据,特征列)
    inputs = tf.feature_column.input_layer(features, columns)
    v=sess.run(inputs)
    print(v)
    [[0. 1. 0. 0. 0.]
     [0. 1. 0. 0. 0.]
     [0. 0. 0. 1. 0.]
     [0. 0. 0. 0. 1.]]

    5、tf.feature_column.indicator_column(categorical_column)

    作用:将 categorical_column表示成 multi-hot形式的 dense tensor,同一个元素在一行出现多次, 计数会超过1。
    参数:
    必须是categorical_column,只有 categorical_column_with_* ,crossed_column 以及bucketized_column 类型的column 才可以使用该函数。
     

    import tensorflow as tf
    sess=tf.Session()
    
    #特征数据
    features = {'sex': [['male','other'], ['male','female'], ['female','female'],['other','female']]}
    #特征列
    sex_column = tf.feature_column.categorical_column_with_vocabulary_list('sex', ['male', 'female','other'],num_oov_buckets=2)
    sex_column = tf.feature_column.indicator_column(sex_column)
    #组合特征列
    columns = [sex_column]
    #输入层(数据,特征列)
    inputs = tf.feature_column.input_layer(features, columns)
    #初始化并运行
    init = tf.global_variables_initializer()
    sess.run(tf.tables_initializer())
    sess.run(init)
    v=sess.run(inputs)
    print(v)
    [[1. 0. 1. 0. 0.]
     [1. 1. 0. 0. 0.]
     [0. 2. 0. 0. 0.]
     [0. 1. 1. 0. 0.]]

    如果你已经来到这里,不妨关注如下公众号一起探索这个奇妙世界:

    有酒有风

    6、tf.feature_column.embedding_column

    tf.feature_column.embedding_column(
    categorical_column,
    dimension,
    combiner='mean',
    initializer=None,
    ckpt_to_load_from=None,
    tensor_name_in_ckpt=None,
    max_norm=None,
    trainable=True
    )

    该方法和indicator_column一样,只接受 categorical_column,目的是将 稀疏矩阵转换为稠密矩阵。

    参数:
    categorical_column:入参categorical_column_with_*的返回
    dimension: embedding 的维度,一般计算规则是 类别开4次方,但是也可以根据需要自行设置
    combiner: 多个 vector的 组合方式,有 mean(default),sqrtn以及sum
    initializer:embedding matrix的初始化值,默认 均值0,标准差 1/sqrt(dimension)的tf.truncated_normal_initializer 
    ckpt_to_load_from以及tensor_name_in_ckpt 主要是为了使用pre-trained embedding matrix 
    max_norm: if not 'None',则使用l2 归一化
    trainable: 是否可训练的

    features = {'aa': [[2], [1], [3]]}
    # 特征列 feature_column
    aa_fc = tf.feature_column.categorical_column_with_identity('aa', num_buckets=9, default_value=0)
    # aa_fc = tf.feature_column.indicator_column(aa_fc) 
    '''对于维度特别大的feature_column, 使用 embedding_column, 过于稀疏的特征对模型影响比较大 '''
    aa_fc = tf.feature_column.embedding_column(aa_fc, dimension=4) 
    
    # 组合特征列 feature_columns
    columns = [aa_fc]
    # 输入层
    inputs = tf.feature_column.input_layer(features=features, feature_columns=columns)
    
    # 初始化并运行
    sess = tf.Session()
    variables_init = tf.global_variables_initializer()
    table_init = tf.tables_initializer()
    sess.run(variables_init)
    sess.run(table_init)
    v = sess.run(inputs)
    print(v)
    [[-0.08986011 -0.58195084 -0.28713277 -0.10367975]
     [ 0.10307329 -0.41133747 -0.2876911  -0.13596815]
     [-0.8687555   0.4577404   0.160222   -0.23040968]]

    7、tf.feature_column.crossed_column

    特征交叉,交叉后的Tensor。输出为cross的one-hot结果,hash_bucket_size代表输出的交叉向量的one-hot维度,按照index进行交叉的,也就是说同一个样本,不同特征进行交叉。
    对于缺失的特征,使用前一个index的特征做交叉。

    #特征数据
    features = {
        'sex': [1, 2, 1, 1, 2],
        'department': ['sport', 'sport', 'drawing', 'gardening', 'travelling'],
    }
    #特征列
    department = tf.feature_column.categorical_column_with_vocabulary_list('department', ['sport','drawing','gardening','travelling'], dtype=tf.string)
    sex = tf.feature_column.categorical_column_with_identity('sex', num_buckets=2, default_value=0)
    sex_department = tf.feature_column.crossed_column([department,sex], 10)
    # sex_department = tf.feature_column.crossed_column([features['department'],features['sex']], 16)
    sex_department = tf.feature_column.indicator_column(sex_department)
    #组合特征列
    columns = [sex_department]
    #输入层(数据,特征列)
    inputs = tf.feature_column.input_layer(features, columns)
     
    #初始化并运行
    init = tf.global_variables_initializer()
    sess.run(tf.tables_initializer())
    sess.run(init)
    v=sess.run(inputs)
    print(v)
    

     

    展开全文
  • tf.feature_column详解

    千次阅读 2020-06-19 11:08:52
    在tensorflow2.0 环境下的tfrecord读写及tf.io.parse_example和tf.io.parse_single_example的区别中已经降到...这个工具的就是tf.feature_column,同时tf.feature_column也是一个特征工程的工具,可以用来自动one-ho...

     

     

    tensorflow2.0 环境下的tfrecord读写及tf.io.parse_example和tf.io.parse_single_example的区别中已经讲到了从tfrecord 中读取数据需要提供一个dict,里面包含了特征名称和特征的类型,如果我们特征很少,只需要手写这个dict就可以。但是当特征非常多的时候,就需要更方便的工具来生成这个dict。这个工具的就是tf.feature_column,同时tf.feature_column也是一个特征工程的工具,可以用来自动one-hot处理,还有hash分桶等处理。

    tf.feature_column中的函数主要包括以下的的函数,下面会分别进行讲解

    数值类型tf.feature_column.numeric_column

    tf.feature_column.numeric_column(
        key, shape=(1,), default_value=None, dtype=tf.dtypes.float32, normalizer_fn=None
    )

    tf.feature_column.numeric_column用于抽取数值类型的特征,即dense特征,在tensorflow2.0 环境下的tfrecord读写及tf.io.parse_example和tf.io.parse_single_example的区别 中,7日内的消费和7日内打开淘宝的天数都用该函数定义:

    pay = tf.feature_column.numeric_column('pay',shape=(1,), default_value=None, dtype=tf.dtypes.float32, normalizer_fn=None)
    use_day = tf.feature_column.numeric_column("use_day",shape=(1,), default_value=None, dtype=tf.dtypes.int64, normalizer_fn=None)

    应该注意的是key必须和tfrecord 中的key对应。shape必须与tfrecord中的shape对应,如果我们还有一个特征,是用户连续几天的消费金额[99.9, 249, 33] ,那么shape就要被定义成(3, )

    类别特征系列

    解析类别特征的方法最常用的有

    方法生成的子类
    categorical_column_with_identityCategoricalColumn
    categorical_column_with_vocabulary_listCategoricalColumn,存有vocabulary_list
    categorical_column_with_vocabulary_fileCategoricalColumn,存有vocabulary_file
    categorical_column_with_hash_bucketHashedCategoricalColumn

     

     

    categorical_column_with_vocabulary_list

    根据sparse特征列表定义特征

    city = tf.feature_column.categorical_column_with_vocabulary_list("city",["shanghai","beijing","guangzhou","tianjin","shenzhen"])

    这种方法的缺点是只能用于数量较少的种类,比如性别,省份等。种类非常多的catogery,例如店铺id,就非常不适合这种方法了。

    categorical_column_with_identity

    这个方法用于已经编码的sparse特征,例如,店铺id虽然数量非常大,但是已经把每个店铺id都从0开始编码,那么就可以用

    poi = tf.feature_column.categorical_column_with_identity("poi", num_buckets=10, default_value=0)

    其中,num_bucket是最大编号

    tf.feature_column.categorical_column_with_vocabulary_file

    前面已经说了,当sparse特征的种类数量非常巨大的时候,就不能用用categorical_column_with_vocabulary_list了,用categorical_column_with_identity 又需要事先对sparse特征编码,这时候可以用tf.feature_column.categorical_column_with_vocabulary_file命令,读取sparse特征的所有可能取值。当然这种方法的效率也是比较低的,在要求低延迟的线上是不太划算的。

    tf.feature_column.categorical_column_with_vocabulary_file(
        key, vocabulary_file, vocabulary_size=None, dtype=tf.dtypes.string,
        default_value=None, num_oov_buckets=0
    )

    categorical_column_with_hash_bucket

    如果sparse特征非常庞大,例如上面的poi可以写成

    poi = tf.feature_column.categorical_column_with_hash_bucket("poi", hash_bucket_size=10, dtype=tf.dtypes.int64)

    但是应该注意的是,hash_bucket_size的大小应该留有充分的冗余量,否则非常容易出现hash冲突,在这个例子中,一共有3个店铺,把hash_bucket_size设定为10,仍然得到了hash冲突的结果,这样poi的信息就被丢失了一些信息

     

    tf.feature_column.indicator column 

    tf.feature_column.indicator column  是一个onehot工具,用于把sparse特征进行onehot 变换,用于把categorical_column_with_*工具生成的特征变成onehot 编码

    tf.feature_column.indicator column 的入参非只有一个,就是categorical_column_with_*的结果。

    poi = tf.feature_column.categorical_column_with_hash_bucket("poi", hash_bucket_size=15, dtype=tf.dtypes.int64)
    poi_idc = tf.feature_column.indicator_column(poi)
    

    这里还有一个有趣的细节,在tensorflow2.0 环境下的tfrecord读写及tf.io.parse_example和tf.io.parse_single_example的区别中我们已经提到了tf.io.parse_example和tf.io.parse_single_example的区别。在这里他们还有另一个区别

    poi = tf.feature_column.categorical_column_with_hash_bucket("poi", hash_bucket_size=15, dtype=tf.dtypes.int64)   #创建poi特征
    poi_idc = tf.feature_column.indicator_column(poi)  #onehot处理
    feature_column = [poi_idc] 
    feature = tf.feature_column.make_parse_example_spec(feature_column)  #生成poi的featuredict
    path = "./tfrecord"
    data = tf.data.TFRecordDataset(path)  #读取tfrecord
    #分别用tf.io.parse_example 和 tf.io.parse_single_example 解析数据
    data2 = data.map(lambda x : tf.io.parse_example(tf.reshape(x,[1]), features = feature))
    data3 = data.map(lambda x : tf.io.parse_single_example(x, features = feature))

    tf.io.parse_example得到的poi是一个形状为[1 3]的张量,而tf.io.parse_single_example得到的是一个形状为[3]的张量,这个区别就直接决定了

    for batch in data2:
        tensor = tf.compat.v1.feature_column.input_layer(batch,feature_column)  #可以执行
    for batch2 in data3:
        tensor2 = tf.compat.v1.feature_column.input_layer(batch2,feature_column)  #报错
     

    如果看不懂也没关系,只需要记住tf.io.parse_example的结果,在用tf.compat.v1.feature_column.input_layer生成输入时,可以把所有的特征一起生成

    而记住tf.io.parse_single_example的结果,只能对sparse特征逐个生成,然后合并成起来。

    tf.feature_column.embedding_column

    用于生成embedding后的张量

    tf.feature_column.embedding_column(
        categorical_column, dimension, combiner='mean', initializer=None,
        ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True,
        use_safe_embedding_lookup=True
    )

    他的几个入参意义分别是

    categorical_column: categorical_column_with_* 工具的结果

    dimension:embedding后的维度

    combiner:对于多种类的sparse特征怎么组合,Currently 'mean', 'sqrtn' and 'sum' are supported

    其他配置全部用默认就好了,绝大部分情况都不会有什么影响

    应该注意的是,与indicator的一样,用tf.io.parse_single_example会生成一个embedding后的举证,而tf.io.parse_example会得到一个向量。例如

    poi = tf.feature_column.categorical_column_with_hash_bucket("poi", hash_bucket_size=15, dtype=tf.dtypes.int64)
    poi_ebd = tf.feature_column.embedding_column(poi,dimension = 3,combiner = "mean")
    feature_column = [poi_ebd]
    feature = tf.feature_column.make_parse_example_spec(feature_column)
    path = "./tfrecord"
    data = tf.data.TFRecordDataset(path)
    data2 = data.map(lambda x : tf.io.parse_example(tf.reshape(x,[1]), features = feature))
    data3 = data.map(lambda x : tf.io.parse_single_example(x, features = feature))
    for batch in data2:
        tensor = tf.compat.v1.feature_column.input_layer(batch,feature_column)
    for batch2 in data3:
        tensor2 = tf.compat.v1.feature_column.input_layer(batch2,feature_column)
    print(tensor)
    print(tensor2)
    
    result:
    tf.Tensor([[0.00952441 0.01638425 0.29906932]], shape=(1, 3), dtype=float32)
    tf.Tensor(
    [[-0.59089464 -0.52776134  0.3303768 ]
     [ 0.74979115  0.11539479  0.3902657 ]
     [ 0.08098221  0.21678661 -0.11189163]], shape=(3, 3), dtype=float32)

    tf.feature_column.make_parse_example_spec

    tf.io.parse_example和tf.io.parse_single_example需要一个dict,定义特征名称和特征类型(fixedlenfeature还是varlenfeature)

    tf.feature_column.make_parse_example_spec用于生成这个dict,他的入参必须是个可迭代对象,一般都是一个list,list的元素是上面讲过的所有函数的result。

    这里应该非常注意的是,tf.feature_column.indicator column 和tf.feature_column.embedding_column 并不影响tf.feature_column.make_parse_example_spec,也就是说,一个特征是否经过了tf.feature_column.indicator column 和tf.feature_column.embedding_column 后tf.feature_column.make_parse_example_spec的结果是一样的,tf.io.parse_example和tf.io.parse_single_example的结果也是一样的。

    例子:

    poi = tf.feature_column.categorical_column_with_hash_bucket("poi", hash_bucket_size=15, dtype=tf.dtypes.int64)  #定义poi特征
    poi_ebd = tf.feature_column.embedding_column(poi,dimension = 3,combiner = "mean") #poi做embedding
    poi_idc = tf.feature_column.indicator_column(poi)  #poi做indicator
    
    
    feature_column = [poi]
    feature_column2 = [poi_ebd]
    feature_column3 = [poi_idc]
    
    feature = tf.feature_column.make_parse_example_spec(feature_column)
    feature2 = tf.feature_column.make_parse_example_spec(feature_column2)
    feature3 = tf.feature_column.make_parse_example_spec(feature_column3)
    
    print(feature)
    print(feature2)
    print(feature3)
    
    ===============================================================
    
    result:
    {'poi': VarLenFeature(dtype=tf.int64)}
    {'poi': VarLenFeature(dtype=tf.int64)}
    {'poi': VarLenFeature(dtype=tf.int64)}
    
    ===============================================================
    
    path = "./tfrecord"
    data = tf.data.TFRecordDataset(path)
    data2 = data.map(lambda x : tf.io.parse_example(tf.reshape(x,[1]), features = feature))
    data3 = data.map(lambda x : tf.io.parse_example(tf.reshape(x,[1]), features = feature2))
    data4 = data.map(lambda x : tf.io.parse_example(tf.reshape(x,[1]), features = feature3))
    
    for batch in data2:
        tensor = tf.compat.v1.feature_column.input_layer(batch,feature_column)
        print(tf.sparse.to_dense(batch["poi"]))
    for batch2 in data3:
        tensor2 = tf.compat.v1.feature_column.input_layer(batch2,feature_column)
        print(tf.sparse.to_dense(batch2["poi"]))
    for batch3 in data4:
        tensor3 = tf.compat.v1.feature_column.input_layer(batch3,feature_column)
        print(tf.sparse.to_dense(batch2["poi"]))
    
    
    
    result:
    tf.Tensor([[1 3 2]], shape=(1, 3), dtype=int64)
    tf.Tensor([[1 3 2]], shape=(1, 3), dtype=int64)
    tf.Tensor([[1 3 2]], shape=(1, 3), dtype=int64)

    特征工程

    可以看到tf.feature_column.make_parse_example_spec和tf.io.parse_example和tf.io.parse_single_example 仅仅是从tfrecord 中读取数据,并不会对数据做任何的特征工程的处理。

    那么特征工程在哪个环节进行呢?

    poi = tf.feature_column.categorical_column_with_hash_bucket("poi", hash_bucket_size=15, dtype=tf.dtypes.int64)  #定义poi特征
    poi_ebd = tf.feature_column.embedding_column(poi,dimension = 3,combiner = "mean") #poi做embedding
    
    
    
    feature_column2 = [poi_ebd]
    
    feature2 = tf.feature_column.make_parse_example_spec(feature_column2)
    
    
    
    print(feature2)
    
    
    ===============================================================
    
    result:
    {'poi': VarLenFeature(dtype=tf.int64)}
    
    
    ===============================================================
    
    path = "./tfrecord"
    data = tf.data.TFRecordDataset(path)
    
    data2 = data.map(lambda x : tf.io.parse_example(tf.reshape(x,[1]), features = feature2))
    
    
    for batch in data2:
        tensor = tf.compat.v1.feature_column.input_layer(batch,feature_column2)
        print(tf.sparse.to_dense(batch["poi"]))
    
    
    
    
    result:
    tf.Tensor([[1 1 1]], shape=(1, 3), dtype=int64)

    从上面的代码可以看到categorical_column_with_identity、categorical_column_with_vocabulary_list、categorical_column_with_vocabulary_file、categorical_column_with_hash_bucket 保存了数值化方式,

    embedding_column, bucketized_column, indicator_column,保存了特征工程方式,

    最后通过调用feature_column.input_layer,实现了特征工程的处理

     

    展开全文
  • SQL Add Column

    千次阅读 2021-01-18 22:16:42
    1. SQL ADD COLUMN子句简介要向表中添加新列,可使用ALTER TABLE ADD COLUMN语句,如下所示:ALTER TABLE table_nameADD [COLUMN] column_definition;在这个声明中,首先,指定要添加新列的表名称。其次...
  • column什么意思啊回答和翻译如下: Column. 列。Column()函数是什么意思SQL语句中column的意思和常用法 是怎么的 ???sql:column() 函数 (XQuery) 如主题在 XML 内部绑定关系数据中所述,当使用 XML 数据类型方法...
  • Tensorflow.feature_column的总结

    千次阅读 2020-03-24 19:34:18
    tensorflow提供了一个功能强大的特征处理函数tf.feature_column,feature columns是原始数据与estimator之间的过程,其内容比较丰富,可以将各种各样的原始数据转换为estimator可以用的格式。 特征数据主要包括...
  • TensorFlow 特征工程: feature_column

    千次阅读 2019-01-03 13:18:16
    转载请注明出处:http://blog.csdn.net/gamer_gyt ... 特征工程: feature_column 在使用很多模型的时候,都需要对输入的数据进行必要的特征工程处理。最典型的就是:one-hot处理,还有hash分桶等处理。为...
  • Hbase中的Column Family

    万次阅读 多人点赞 2018-08-08 17:02:24
    第一次看HBase, 可能看到以下描述会懵:“基于列存储”,“稀疏MAP”,“RowKey”,“ColumnFamily”。 其实没那么高深,我们需要分两步来理解HBase, 就能够理解为什么HBase能够“快速地”“分布式地”处理“大量...
  • TensorFlow Estimator 官方文档之----Feature column

    万次阅读 多人点赞 2018-10-11 15:34:34
    Feature column 本文档详细介绍了特征列(feature columns)。您可以将特征列视为原始数据和 Estimator 之间的媒介。特征列非常丰富,使您可以将各种原始数据转换为 Estimators 可用的格式,从而可以轻松进行...
  • SQLAlchemy - Column详解

    千次阅读 2019-09-18 21:44:58
    SQLAlchemy - Column详解 Column常用参数: default:默认值 nullable:是否可有 primary_key:是否为主键 unique:是否唯一 autoincrement:是否自动增长 onupdate:更新的时候执行的函数 name:该属性在数据库中的...
  • 数据除了放到各自的prop外,还全部放到了第一个el-table-column label为bb表格中 我想要的效果是 ![图片说明](https://img-ask.csdn.net/upload/201910/12/1570841125_689708.png) 上面有一个label表头,没有值,...
  • ALTER COLUMN:设置或删除列的默认值(操作速度非常快) 例子: alter table film alter column rental_duration set default 5; alter table film alter column rental_duration drop default; CHANGE COLUMN...
  • tensorflow feature_column详解

    万次阅读 2019-06-03 16:41:04
    关于 feature_column官网说的 还比较少,其它说明 大多数 都是 直接 翻译 官网解释,很明显,达不到效果,现在 对feature_column进行说明,更详细的说明,可以参照github: ... 此外,我还对 estimator进行了总结 以及...
  • Hide column

    千次阅读 2020-09-28 15:39:27
    **pycharm操作数据库过程中可能会点到 Hide column ** **此时会发现 改列消失,如何恢复呢? 如下 **
  • json.decoder.JSONDecodeError: Expecting value: line column (char )

    千次阅读 多人点赞 2020-11-06 10:59:58
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 1 )
  • 列间隙和边框多列布局之后,通过 column-gap属性和 column-rule属性来设置相邻两列之间的间隙及边框的样式,column-rule 会出现在列间隙的中间位置,column-gap 和 column-rule 的高度等于列的高度。column-...
  • Column 'id' cannot be null

    万次阅读 2019-09-16 17:18:31
    Column 'id' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be null] with root cause ...
  • mysql列column常用命令的使用总结

    千次阅读 2021-01-19 08:10:50
    本文主要内容mysql 列常用命令:查看表的列的属性 describe table_name column_nameshow all column property查看所有列的属性修改表的列属性 alter table modify rename column重命名列添加列(同时添加索引)、删除...
  • Spark之Column

    千次阅读 2019-05-11 17:07:22
    如果使用DataFrame或DataSet分析数据,那么Column这个类是无时无刻都在使用的 什么是Column Column是DataFrame中的数据计算出来的 根据字面意思也可以知道,它就是代表DataFrame的一列数据,它是org.apache.spark....
  • 使用thinkphp5的insertAll的批量新增函数,提示SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 2 其意思就是:在第二行数据开始,插入的...
  • DataFrame属性和column有什么区别

    千次阅读 2021-01-29 03:43:39
    if you try to use attribute access to create a new column, it creates a new attribute rather than a new column. **In 0.21.0 and later, this will raise a UserWarning** (所以你可能是在不知不觉中这么做...
  • tf.feature_column.embedding_column()函数将sparse/categrical特征转化为dense 向量。shared_embedding_columns跟embedding_column,不同之处在于它产生嵌入共享相同的嵌入权重列的列表。
  • json.decoder.JSONDecodeError: Invalid \escape: line 1 column 1 (char 1)
  • mysql新建数据表遇到Incorrect column specifier for column 'xxx' 首次遇到这个问题,百度过后发现都说是因为把xxx字段设置了自动增长,且字段类型没有设置为INT 经过尝试,我的问题不是这样的,也就不能这样解决 ...
  • Duplicate column name 'CODE' 我能理解提示的意思说我的两个进行左连接的表格都有‘code’列,重名了吧,但是我不知道如何更改,我试过将select*变为select toe_tele_list.*,能够执行,但是结果保存的表格没有...
  • @Column注解解析

    千次阅读 2020-11-02 22:58:19
    功能:@Column注解用来标识实体类中属性与数据表中字段的对应关系 语法: @Column(columnDefinition = "bigint(18) comment '公司ID'") private Long ouId; //columnDefinition表示创建表时,该字段创建的SQL...
  • Spring @Column的注解详解

    万次阅读 2018-07-01 16:49:50
    Spring @Column的注解详解就像@Table注解用来标识实体类与数据表的对应关系类似,@Column注解来标识实体类中属性与数据表中字段的对应关系。该注解的定义如下:@Target({METHOD, FIELD}) @Retention(RUNTIME) public...
  • column 命令

    千次阅读 2018-03-30 15:10:33
    column的其他用法如下:选项含义-c 字符数指定显示的列宽-s“ 分隔符 “使用-t选项时,指定分隔符(允许指定多个分隔符)-t判断输入行的列数来创建一个表。分隔符是使用在-s中指定的字符。如果没有指定分隔符,...
  • 一、基类Column概述 Column是datax中所有数据类型的基类,里面有3个属性,以及一个构造方法,外加一个枚举类; public abstract class Column { private Type type; private Object rawData; private int ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,159,036
精华内容 463,614
关键字:

column